crontab使用语法:
crontab [ -u user ] file #从file文件中读取,不建议使用
crontab [ -u user ] [ -i ] { -e | -l | -r } # -e代表编辑,-l代表显示存在的cron,-r代表移除cron任务
如编辑jpuyy的cron列表,
如果是root来帮jpuyy写cron规则:
crontab -u jpuyy -e
如果是jpuyy自己,则直接使用:
crontab -e
cron会自动搜索/var/spool/cron/crontabs目录,找到与对应用户的cron来执行,可以发现上面crontab编辑的就是这些文件,用crontab很方便,就不要直接编辑这些文件了。
在ubuntu下,默认编辑cron的为nano,使用不方便。
修改默认编辑器修改环境变量EDITOR.
export EDITOR=vi
cron的写法:
其实这些都是描述性的语句,告诉cron去怎么执行;每一条语句要单独做为一行;重点是时间的写法。五个区域代表了时间,区域里用数字与符号结合使用:
数字可以是:
分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了数字,几个符号是:
星号”*” 代表所有的取值范围内的数字
反斜杠”/” 代表每的意思,”*/5″表示每5个单位
减号”-” 代表从某个数字到某个数字,
英文半角逗号”,” 代表分开几个离散的数字
当时间描述完之后,加上要执行的命令:
这个区域里的命令,请尽量多的用绝对路径
如之前设定重启时,
30 3 * * * reboot不管用,最后改为 30 3 * * * /sbin/reboot才起的做用
例子:
每隔两周且在周一的9点半执行清空/tmp/cache/*
30 9 * * 1/2 rm -rf /tmp/cache/*
如果希望重启后首先运行一次,则在最前面清加@reboot,如
@reboot 30 9 * * 1/2 rm -rf /tmp/cache/*
四个关键字及等价形式
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot Run at startup.
cron任务的执行结果会输出到对应用户的mail文件中,如果不需要发给任何人,则使用
MAIL=""
cron 里可以写私用变量,后面的脚本即可使用此变量
my_variable=foo * * * * * echo $my_variable
每5分钟跑一次a.sh,同样的每5分钟跑一次b.sh,两个脚本错开时间,比如02, 07, 12, 17, 22, 27… 跑a脚本,04, 09, 14, 19, 24, 29…跑b脚本
4-59/5 * * * * c1 2-59/5 * * * * c2
参考:http://serverfault.com/questions/351505/crontab-steps-plus-increment
cron测试网站: http://cron.schlitt.info/index.php
cron生成网站: http://www.generateit.net/cron-job/
Leave a Reply