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

浙公网安备 33010602011771号