代码改变世界

Crontab小记

2013-05-31 00:39  v2m  阅读(477)  评论(0编辑  收藏  举报

介绍
crontab用来设置周期性被cron这个守护进程执行的指令的命令。
参数有

-l 列出当前用户的所用计划任务
-e 编辑当前用户的计划任务
-r 删除当前用户的计划任务
-u 指定一个用户

 

运行crontab -e会看到一个被注释了的简短教程
这个文件里面的每一行对应一个任务,格式是

# 文件格式说明
# ——分钟 (0 - 59)
# | ——小时 (0 - 23)
# | | ——日 (1 - 31)
# | | | ——月 (1 - 12)
# | | | | ——星期 (0 - 7)(星期日=0或7)
# | | | | |
# * * * * * 被执行的命令

 

注:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。

时间格式

*: 表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/3, 就表示每隔4个小时执行一次命令。也可以写成1-23/3.

 

注意事项
crontab中的命令执行的时候环境参数跟在shell中执行时是不一样的(可以打印env对比一下),所有经常对变量有要求的一些命令执行的时候可能有错误,这时候可以手动的设置这边变量的值:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin
HOME=/

01 * * * * cmd__

 

我遇到的情况是ruby的脚本无法执行,看了下是ruby的环境参数都没有带上,通过

/usr/bin/bash -c -l "cmd…"


解决了问题,上面的命令是指定shell,带入当前用户的环境变量,来执行cmd语句

还有一个工具帮你正确生成crontab的语句,whenever 

技巧
通过设置5个段都是*可以立即执行后面的任务,从而快速测试任务命令是否有写正确


参考:http://zh.wikipedia.org/wiki/Cron