1. cron 周期行执行任务
2. 配置文件
系统任务配置在:/etc/crontab文件,/etc/cron.d目录,/etc/crontab是给系统管理员手动配置用的,/etc/cron.d是一些安装程序复制过来的。
/etc/crontab 利用命令 run-part 执行其他目录中的脚本,一般如:/etc/cron.hourly, /etc/cron.daily,/etc/cron.weekly, /etc/cron.monthly 。
下面是ubuntu 11.04下面的/etc/crontab 主要内容:
root 用户执行,anacron 功能类似 cron
用户自己特定的任务在:/var/spool/cron/crontabs/
不能直接编辑,需要通过crontab命令,查看自己的crontab用命令:crontab -l;编辑用 crontab -e
(具体man crontabq)
3. crontab的格式
1. #开头的是注释,必须定格写
2. 每一条记录格式:minute hour day month weekday [user name] command
可见最小的粒度是每一分钟
user name 不出现在/var/spool/cron中的配置文件中
时间字段的取值范围如下:
minute: 0-59
hour: 0-23
day:1-31
month: 1-12
weekday: 0-6
* 表示匹配所有;一个数字精确匹配;像2-5这样的表示匹配一个区间;像3,5,7表示匹配一个值的列表。
例子:
45 10 * * 1-5
10:45 a.m., Monday through Friday
0,30 * 13 * 5
every half-hour on Friday, or on 13th of the month
command 字段是需要执行的 sh command,不需要用引号
20 1 * * * find /tmp -atime +3 -exec rm -f {} ';'
4. crontab命令用于编辑、管理crontab,具体查看 LAH 8.3
crontab file-name 安装file-name 作为自己的crontab
crontab -e 编辑用户自己的crontab,编辑器由 EDITOR 环境变量指定
crontab -l 在标准输出上列出自己的 crontab
crontab -r 删除crontab,root用户可以删除指定用户的crontab:crontab -u user-name -r
crontab 不带参数,从标准输入读取crontab;如果不小心进入此模式,此时Ctl+D会删除原来的crontab,因为没有输入,此时应该按Ctl+C结束,这样可以保留原来的 crontab
可以通过/etc/cron.deny和/etc/cron.allow编辑控制那些用户可以提交crontab。如果不存在这两个文件,默认情况下,多数系统只允许root用户提交crontab,debian和ubuntu允许所有用户提交。
5. cron 应用场景
清理文件处理 log files
6. anacron 和 fcron
anacron 对 cron 做了一些功能上的补充,它可以制定执行周期,记录任务最近执行时间,任务排队等。
anacron 以天为单位执行,运行依赖于cron,cron可以以更小的时间间隔执行anacron。
fcron是为了替代cron而开发的,而不是作为补充。使用它之前需要斟酌。