后台定时进程由crond服务控制
可以通过/etc/cron.allow,/etc/cron.deny来限制使用crontab命令的账号
当使用crontab命令建立定时任务后,任务会被记录到/var/spool/cron里面,用账号作为文件名
cron执行的每一项任务都会被记录到/var/log/cron文件中
crontab命令用法:crontab [-u username] [-l|-e|-r]
-u:只有root才能进行这个任务,用来帮助其他使用者建立/删除crontab任务
-e:编辑crontab的工作任务
-l:查询crontab的工作任务
-r:溢出所有的crontab认为,若移除一项,用-e去编辑
代表意义 分钟 小时 日期 月份 周 指令
数字范围 0-59 0-23 1-31 1-12 0-7 指令
"*" 代表任何时刻都接受的意思!举例来说,范例一内那个日、月、周都是 * , 就代表着‘不论何月、何日的礼拜几的 12:00 都执行后续指令’的意思!
"," 代表分隔时段的意思。举例来说,如果要下达的工作是 3:00 与 6:00 时,就会是:
0 3,6 * * * command时间参数还是有五栏,不过第二栏是 3,6 ,代表 3 与 6 都适用!
"-" 代表一段时间范围内,举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工作:
20 8-12 * * * command
仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思!
"/n" 那个 n 代表数字,亦即是‘每隔 n 单位间隔’的意思,例如每五分钟进行一次,则:
*/5 * * * * command
很简单吧!用 * 与 /5 来搭配,也可以写成 0-59/5 ,相同意思!
crontab -e是针对使用者的cron设计的,如果是系统的定时任务,需要编辑/etc/crontab
Linux的crontab会自动每分钟读取/etc/crontab里面的任务
有些系统的crontab是读到内存的,所有在编辑完/etc/crontab之后,需要重启crond服务,/etc/init.d/crond restart
01 * * * * root run-parts /etc/cron.hourly:
注:run-parts是个bash脚本,会将后面目录内的所有脚本执行一遍
注意事项:
1.资源分配不足:可以将任务分别在不同个时间执行
[root@www ~]# vi /etc/crontab
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root CMD1
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root CMD2
3,8,13,18,23,28,33,38,43,48,53,58 * * * * root CMD3
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root CMD4
那个‘ , ’分隔的时候,请注意,不要有空白字元!(连续的意思)如此一来, 则可以将每五分钟工作的流程分别在不同的时刻来工作
2.取消不要的输出项目
直接以‘命令重导向’将输出的结果输出到 /dev/null 这个垃圾桶当中就好了!
3.安全的检验
检查 /var/log/cron 的内容来视察是否有‘非您设定的 cron 被执行了?
4.周与日月不可同时并存