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