crontab是Linux系统在固定时间或在固定时间间隔自动执行其中预定义作业(Job)的一个自动化组件。
使用方式:
crontab -l 列出当前用户的所有预定义cron作业(Job)
crontab -e 编辑当前用户的cron作业(可以增加、修改和删除)
crontab -r 删除当前用户的所有cron作业(慎用)
crontab -u user -l 列出指定用户的所有预定义作业
crontab -u user -e 编辑指定用户的cron作业(可以增加、修改和删除)
crontab -u user -r 删除指定用户的所有cron作业(慎用)
命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。
时程表的格式如下:
f1 f2 f3 f4 f5 program
f1表示分钟,取值范围为0~59
f2表示小时,即几点,取值范围为1~23
f3表示日,即几号,取值范围为1~31
f4表示月份,取值范围为1~12
f5星期,取值范围为0~6(其中0表示星期日)
program表示要自动执行的程序
当f1为*时,表示每分钟都要执行program一次,f2为*时,表示每小时都要执行program一次,以此类推;
当f1为a-b时,表示从第a分钟到第b分钟这段时间内要一直执行program,以此类推;
当f1为*/n时,表示每n分钟(个时间间隔)执行program一次,当f2为*/n时,表示每n小时执行program一次,以此类推;
当f1为a,b,c,...时,表示第a,b,c,...分钟都要执行program一次,当f2为a,b,c,...时,表示第a,b,c,...小时都要在执行program一次,以此类推;
例子:
#每天早上7点执行一次 /bin/ls:
0 7 * * * /bin/ls
#在 12 月, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup
#周一到周五每天下午 5:00 寄一封信给 alex@domain.name:
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
#若是你不希望收到这样的信,请在行末尾空一格之后加上 > /dev/null 2>&1 即可
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata > /dev/null 2>&1
#每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月1日早上4点
0 4 1 jan * date
文件的位置:
1. 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。
2. 作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。
3. /usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。
4. 命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab。