Linux的crond定时任务

crond是一个系统服务,用于执行定时任务。
它每分钟读取一次三个地方的配置文件,然后执行其标示的命令,这三个地方是:
/etc/crontab,这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
/etc/cron.d/,这个目录用来存放任何要执行的crontab文件或脚本。
/var/spool/cron/,这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom的crontab任务对应的文件就是/var/spool/cron/tom,一个用户最多只有一个crontab文件。

crontab命令用于管理每个用户的crontab文件。
手动编辑crontab文件时要指定执行用户,crontab -e编辑的则是当前用户的定时任务。

/etc/下还有这几个目录cron.hourly/、cron.daily/、cron.weekly/、cron.monthly/,这几个目录方便管理每小时、每天、每周、每月执行的任务,如要启用它们,需在/etc/crontab或/etc/cron.d/中添加它们,否则它们就是无用的。

/var/spool/cron/归属于root,权限是700,但因为crontab设置了SUID位(参考《Linux下文件和进程的相关用户ID》),普通用户也可以通过crontab命令来管理定时任务。root通过/etc/cron.allow文件来控制谁有权使用crontab命令,如果用户的名字出现在cron.allow文件中,他就有权使用crontab命令。如果cron.allow文件不存在,系统会检查/etc/cron.deny文件来确定是否这个用户被拒绝存取。如果两个文件都存在,cron.allow有优先权。如果两个文件都不存在,只有root可以提交任务。如果cron.deny文件为空文件,所有的用户都可以使用crontab。

crontab文件格式

简单说明

# .---------------- 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

例子

# use /bin/bash to run commands, instead of the default /bin/sh
SHELL=/bin/bash
0 22,23 * * 1-5    echo "run at 10 pm and 11 pm on weekdays"
23 0-23/2 * * * echo "run 23 minutes after midnight, 2am, 4am ..., everyday"
# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday
0 */4 1 * mon   echo "run every 4th hour on the 1st and on every Monday"
0 0 */2 * sun   echo "run at midn on every Sunday that's an uneven date"

minute,hour,month of the year三个fields与当前时间匹配,且两个day fileds(day of month,day of week)中至少有一个匹配当前时间时,命令会被执行。
如果两个day fields都是restricted(即不包含*字符),符合二者之一即可。
所以0 */4 1 * mon中1st和Monday是或的关系,0 0 */2 * sun中奇数日期和Sunday是且的关系。

更多细节参考man 5 crontab

参考

《linux下添加定时任务》
http://blog.csdn.net/hi_kevin/article/details/8983746
《Fine-grainedtask scheduling with cron.d》
http://articles.slicehost.com/2010/8/6/fine-grained-task-scheduling-with-cron-d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值