linux定时任务crontab 实现每秒执行一次的方法
linuxcrontab命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,可以有两个方法实现。
Cron各项的描述
以下是crontab文件的格式:
{minute}{hour}{day-of-month}{month}{day-of-week}{full-path-to-shell-script}
ominute:区间为0–59
ohour:区间为0–23
oday-of-month:区间为0–31
omonth:区间为1–12.1是1月.12是12月.
oDay-of-week:区间为0–7.周日可以是0或7.
1.使用延时来实现每N秒执行
创建一个php做执行动作,非常简单,就是把当前时间写入log。
crontab-e输入以下语句,然后:wq保存退出。
*****php/home/fdipzone/php/crontab/tolog.php *****sleep10;php/home/fdipzone/php/crontab/tolog.php *****sleep20;php/home/fdipzone/php/crontab/tolog.php *****sleep30;php/home/fdipzone/php/crontab/tolog.php *****sleep40;php/home/fdipzone/php/crontab/tolog.php *****sleep50;php/home/fdipzone/php/crontab/tolog.php
使用tail-f查看执行情况,可以见到log每10秒被写入一条记录。
fdipzone@ubuntu:~$tail-f/home/fdipzone/php/crontab/run.log 2014-03-3121:47:01 2014-03-3121:47:11 2014-03-3121:47:21 2014-03-3121:47:31 2014-03-3121:47:41 2014-03-3121:47:51 2014-03-3121:48:01
原理:通过延时方法sleepN 来实现每N秒执行。
注意:
60必须能整除间隔的秒数(没有余数),例如间隔的秒数是2,4,6,10,12等。
如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab加入60/2=30条语句。不建议使用此方法,可以使用下面介绍的第二种方法。
2.编写shell脚本实现推荐
crontab.sh
#!/bin/bash step=2#间隔的秒数,不能大于60 for((i=0;i<60;i=(i+step)));do $(php'/home/fdipzone/php/crontab/tolog.php') sleep$step done exit0
crontab-e输入以下语句,然后:wq保存退出。
#mhdommondowcommand *****/home/fdipzone/php/crontab/crontab.sh
使用tail-f查看执行情况,可以见到log每2秒被写入一条记录。
fdipzone@ubuntu:~/php/crontab$tail-frun.log 2014-03-3122:23:01 2014-03-3122:23:03 2014-03-3122:23:06 2014-03-3122:23:08 2014-03-3122:23:10 2014-03-3122:23:12 2014-03-3122:23:14 2014-03-3122:23:16 2014-03-3122:23:18 2014-03-3122:23:20 2014-03-3122:23:22 2014-03-3122:23:25 2014-03-3122:23:27 2014-03-3122:23:29 2014-03-3122:23:31 2014-03-3122:23:33 2014-03-3122:23:35 2014-03-3122:23:37 2014-03-3122:23:39 2014-03-3122:23:41 2014-03-3122:23:44 2014-03-3122:23:46 2014-03-3122:23:48 2014-03-3122:23:50 2014-03-3122:23:52 2014-03-3122:23:54 2014-03-3122:23:56 2014-03-3122:23:58 2014-03-3122:24:00
原理:在sh使用for语句实现循环指定秒数执行。
注意:如果60不能整除间隔的秒数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。
则crontab.shstep的值为7,循环结束条件i<420,crontab-e可以输入以下语句来实现
#mhdommondowcommand */7****/home/fdipzone/php/crontab/crontab.sh
总结
以上所述是小编给大家介绍的linux定时任务crontab实现每秒执行一次的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!