crontab 的使用

crontab是linux下的定时执行工具,可以在无需人工干预的情况下运行作业。

 

*/1 * * * * echo "hello world" >> /home/users/v_liujun01/myworkplace/test.txt

 

crontab -u 设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l 列出cron服务

crontab -r 删除cron服务

crontab -e 编辑cron服务

crontab -ir 删除cron服务前提示:really delete v_liujun01's crontab?

crontab filename 用指定的文件替代目前的crontab

普通用户只会用到 crontab -l  crontab -r crontab -e 这三个参数

当root想要查看某个人的cron的时候用 crontab -u v_liujun01 -l

当root想要删除某个人的cron的时候用 crontab -u v_liujun01 -r

当root想要编辑某个人的cron的时候用 crontab -u v_liujun01 -e

编辑cron时,内容要符合一定格式:

* * * * * commond 

分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

* 代表所有的取值范围内的数字

/ 每

*/5 每5个单位

- 代表某个数字到某个数字的区间

, 分开离散的数字

 

 

时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表, 一般多用这种方式设置.

 

其他示例:

#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月1日早上4点
0 4 1 jan * date

 

 

使用crontab定时执行php脚本

 

*/1 * * * * /home/users/v_liujun01/local/php/bin/php /home/users/v_liujun01/www/test/test/test2.php 

如上会存在问题

但是写成这样 */1 * * * * cd /home/users/v_liujun01/www/test/test/; /home/users/v_liujun01/local/php/bin/php test2.php

就能够执行php脚本

 

*/1 * * * * cd /home/users/v_liujun01/www/test/test/; /home/users/v_liujun01/local/php/bin/php test3.php >> test3.txt

执行test3.php并将脚本输出的内容写入test3.txt

 

还可以远程执行PHP脚本

例:

0 5 * * * /usr/bin/curl   http://www.xmsdn.net/it-net/linux/linux-curl-crontab

 

下面图中的是报警中调用 AlarmAction.class.php中的crontab脚本

 

 

使用crontab定时执行shell

/home/users/v_liujun01/myworkplace/shelltest/test1.sh中的代码:

echo 'hello world' >> /home/users/v_liujun01/myworkplace/shelltest/test.txt

 

crontab中的内容

*/1 * * * * /home/users/v_liujun01/myworkplace/shelltest/test1.sh

 

需要注意的是:在shell中的地址要用绝对地址,相对地址会出现问题,crontab默认的是家目录,例如shell中有./test.txt的相对地址,contab会到家目录中寻找test.txt

posted @ 2014-12-18 16:14  小刘_php  阅读(139)  评论(0)    收藏  举报