crond 是 linux 下用来周期性的执行某种任务或等待处理某些事件的一个守护程序,与 windows 下的计划任务类似,当安装完成操作系统后,预设会安装此服务工具,并且会自动启动 crond 程序,crond 程序每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
cron 是一个常驻服务,它提供计时器的功能,让使用者在特定的时间得以执行预设的指令或程式。只要使用者会编辑计时器的配置档案,就可以使用计时器的功能
==============================================================
常用的命令:
列出该使用者的所有定时器:crontab -l
编辑该使用者的所有定时器:crontab -e
删除该使用者的所有定时器:crontab -r
==============================================================
基本格式
# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
———————————————————————————-
* * * * * command
分 时 日 月 星
分: 表示分钟,可以是从 0 到 59 之间的任何整数。
时:表示小时,可以是从 0 到 23 之间的任何整数。
日:表示日期,可以是从 1 到 31 之间的任何整数。
月:表示月份,可以是从 1 到 12 之间的任何整数。
星:表示星期几,可以是从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的指令码档案。
========================================================
在以上各个栏位中,还可以使用以下特殊字元:
星号(*):代表所有可能的值,例如 month 栏位如果是星号,则表示在满足其它栏位的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如 “2-6” 表示 “2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如 “0-23/2” 表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在 minute 栏位,表示每十分钟执行一次。
========================================================
常用定时时间:
每 1 分钟执行一次 command * * * * * command
每天早上六点执行一次~ 0 6 * * * command
每两个小时执行一次~ 0 */2 * * * command
晚上 11 点到早上八点之间每两个小时和每八小时执行一次 0 23-7/2,8 * * * command
每月 12 号的每个星期二到星期五上午 9 点执行 0 9 12 * 2-5 command
========================================================
crontab 没有立即生效原因
第一种是指令码执行了,但是报错:在 crontab 里排程执行,结果发现没有结果,检视/var/log/message 日志,发现 crontab 有执行,但是失败。
手动执行都是可以的,放在 crontab 里边发现就不能执行了。
处理方法:指令码中不要采用相对路径,全部改为绝对路径
第二种是编辑/var/spool/cron/user user 为执行使用者名称,一般为 root
如更改后不起效果,请重新载入 cron:
处理方法: /etc/init.d/cron reload
第三种 用 crontab -e 进行编辑
#crontab -e
如还不行就重启服务:
处理方法:/etc/init.d/crond restart