10.2.3 crontab命令的使用
crontab命令格式:crontab
参数如下。
- -e:执行文字编辑器来设定时程表,内定的文字编辑器是VI。
- -r:删除目前的时程表。
- -l:列出目前的时程表。
时程表的格式如下:
f1 f2 f3 f4 f5 program
具体解释如下:其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执行的程序。
可以通过5个字段调整频率:分、小时、月中日、月份和周中的日期(如周一,周二)。表10-1总结了cron作业的调度选项。
位 置 | 字 段 | 值 | 说 明 |
f1 | 分 | 0~59 | |
f2 | 小时 | 0~23 | |
f3 | 月中日 | 1~31 | 与分和小时不同,月中日不是从零开始的 |
f4 | 月份 | 1~12 | 月份也不是从零开始的。也可以不使用1-12的数字,而是使用月份名的前三个字母,比如Jan或May |
f5 | 周中日 | 0~7 | 0和7都代表星期日。还可以使用名称的前三个字母,比如Mon或Wed |
表10-1 cron作业的调度选项
以上这5个参数指定任何调度计划。为了更加简便,cron还提供了常用调度计划的简写形式,如表10-2所示。
简写形式 | 说 明 |
@reboot | 每当计算机重新引导时运行命令 |
@daily | 每天一次的简写形式 |
@weekly | 每周一次的简写形式 |
@annually | 每年一次的简写形式。也可以写成@yearly |
@midnight | 在每天午夜运行命令。这个简写形式相当于@daily |
如果喜欢使用简写形式,只需用它们替代cron命令的前5个字段。
应用实例如下。
每月每天每小时的第0分钟执行一次/bin/ls命令一次:
0 * * * * /bin/ls
在12月内,每天早上6点到12点钟之间,每隔20分钟执行一次/usr/bin/backup备份:
0/20 6-12 * 12 * /usr/bin/backup
通过组合使用cron和数据库工具,创建每日转储。例如,命令:
@daily joe mysqldump -pjoespwd accounts > $HOME/backups/accounts.`date +%F`.sql
每天把数据库accounts转储到一个文件。嵌入的日期命令(`date+%F`)确保文件名是唯一的,比如accounts.2008-12-07.sql。此命令作为用户joe运行,所以用-p指定Joe的密码。此命令还可以放在Joe自己的crontab中,因为转储需要他的MySQL凭证。