创建更高级的 Cron 作业
既然你已经掌握了基础知识,接下来让我们创建一个更高级的 cron 作业,用于记录系统信息。
创建系统信息记录作业
让我们创建一个 cron 作业,每小时记录一次系统内存使用情况的信息。这种监控方式有助于长期跟踪系统性能。
首先,创建一个 shell 脚本,用于收集内存信息:
nano ~/project/memory_check.sh
在 nano 编辑器中,添加以下内容:
#!/bin/bash
echo "Memory check at $(date)" >> ~/project/memory_log.txt
free -m >> ~/project/memory_log.txt
echo "--------------------" >> ~/project/memory_log.txt
这个脚本将执行以下操作:
- 在日志中添加一个时间戳
- 运行
free -m
命令,以兆字节为单位显示内存使用情况
- 添加一条分隔线,以提高可读性
保存并退出编辑器(按 Ctrl+O
、Enter
,然后按 Ctrl+X
)。
现在,使脚本可执行:
chmod +x ~/project/memory_check.sh
你可以测试该脚本,确保它能正常工作:
~/project/memory_check.sh
检查输出文件:
cat ~/project/memory_log.txt
你应该会看到包含时间戳、内存使用信息和分隔线的输出。
现在,使用 crontab 安排这个脚本每小时运行一次:
crontab -e
添加以下行(同时保留你现有的 cron 作业):
0 * * * * ~/project/memory_check.sh
这将在每小时开始时运行内存检查脚本。保存并退出编辑器。
要验证新的 cron 作业是否已添加:
crontab -l
你应该会看到两个 cron 作业:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
使用特殊时间字符串
Cron 还支持一些用于常见调度模式的特殊时间字符串:
@hourly
- 与 0 * * * *
相同
@daily
- 与 0 0 * * *
相同
@weekly
- 与 0 0 * * 0
相同
@monthly
- 与 0 0 1 * *
相同
@reboot
- 在系统启动时运行
让我们使用这些特殊字符串添加一个每天运行的作业:
crontab -e
添加以下行:
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
保存并退出编辑器。这将每天午夜在 daily_check.txt
文件中创建一个新条目。
要验证新的 cron 作业是否已添加:
crontab -l
现在你应该会看到所有三个 cron 作业:
*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt
管理 Cron 作业输出
默认情况下,cron 会将作业的任何输出发送到用户的电子邮件。如果你想完全丢弃输出,可以将其重定向到 /dev/null
:
*/10 * * * * ~/project/some_script.sh > /dev/null 2>&1
对于那些你不需要保留输出的脚本,这是一种常见的做法。