Linux crontab 使用详解
一.介绍crontab(crond)
crond 是linux(Unix) 定时任务触发器,而crontab是输入指令给crond的接口。
工作原理:crond进程启动之后读取配置文件,并将其保存在内存中,接着自己转入到休眠状态。以后每分钟会醒来一次检查配置文件,读取修改过的,并执行为这一刻安排的任务,然后再转入休眠。
任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,
2、用户执行的工作:某个用户定期要做的工作,比如定期检测Tomcat服务进程是否正常.
二.crontab指令
-e 设置当前用户计时器 -l 列出当前用户计时器的设置 -r 删除当前用户计时器的设置 -i 交互式模式,删除计时器设置时要先询问,如crontab -ri [-u user] file 替换其他用户的crontab内容,需相关权限 例如root权限下执行 crontab -u frankwong /var/spool/cron/frankwong1, [-u user][-e |-l|-r] 编辑其他用户的时程表,需相关权限 例如root权限下执行 crontab -u frankwong -e
用户所建立的crontab文件存于/var/spool/cron目录中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段
# For details see man 4 crontabs # 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
可以通过结合下列特殊符号进行个性化时间设置
* 表示任何时刻 , 表示分割,如第一段 10,20,30 表示每个小时的第10,第20和第30分钟 - 表示一个段,如第二段 1-5,就表示1到5点 /n 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令
三.运行权限控制
在/etc/cron.deny 和 /etc/cron.allow 分别声明了不能使用crontab指令和能使用crontab指令的用户清单
- 如果两个文件同时存在,那么/etc/cron.allow 优先。
- 如果两个文件都不存在,那么只有超级用户可以安排作业。
常用指令
*0 * * * /usr/sbin/ntpdate time.windows.com >> /var/log/ntpdate.log //每天0时进行时间同步
注意点
如果同时指定了“日”和“周”,那么满足两个条件之一就会执行。