Think before you speak, read before you think.

cron,crontab整理及实例

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/


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *