• 欢迎访问春风博客

Linux crontab实现秒级定时任务

运维笔记 xiaogang 4年前 (2020-07-16) 3046次浏览 0个评论

Linux crontab 定时任务最少到每分钟执行一次,一些需要频繁运行启动的应用场景无法满足。

Linux crontab:

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|    |    |    +---------- month (1 - 12) OR jan,feb,mar,apr ...
|    |    +--------------- day of month (1 - 31)
|    +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)

crontab能到分钟级,我们可以在sh文件里写一个循环,然后每循环一次间隔多少秒执行下次循环。

先不说了看代码

#!/bin/sh
step=2 #循环间隔的秒数
#(i+step) 是每次循环i值+step 也就是每次循环+2 i到60停止循环
for (( i = 0; i < 60; i=(i+step) )); do   
        /www/server/php/56/bin/php /www/wwwroot/crontab.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_1.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_2.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_3.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_4.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_5.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_6.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_7.php
    sleep $step
done
exit 0

我在项目里使用这种方式定时任务稳定运行了有半年了,会有一点点的时间误差 因为中间PHP脚本运行需要耗时,但是这些误差可以忽略不计。

crontab添加定时任务的时候需要根据脚本的几个数值做相应的时间调整

比如我上面的间隔时间是2秒,每次循环i都会加2,当i到60的时候就会停止,crontab定时任务如下

执行crontab -e 添加如下内容 每分钟运行一次

*/1 * * * * /data/apps/crontab/php_api_clear.sh

比如你的任务需要5秒运行一次 间隔时间(step =5)循环 i 到180 停止 那么定时任务应设为每3分钟执行一次,

脚本内容如下:

#!/bin/sh
step=5 #间隔的秒数
for (( i = 0; i < 180; i=(i+step) )); do
        /www/server/php/56/bin/php /www/wwwroot/crontab.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_1.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_2.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_3.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_4.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_5.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_6.php
	/www/server/php/56/bin/php /www/wwwroot/crontab_7.php
    sleep $step
done
exit 0

 


ChunBlog.Com , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Linux crontab实现秒级定时任务
喜欢 (3)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址