Linux crontab实现秒级定时任务

白芸资源网公益广告

Linux crontab实现秒级定时任务

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 

我在项目里使用这种方式定时任务稳定运行了有半年了,会有一点点的时间误差 因为中间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 

 


    © 版权声明
    THE END
    本站一切内容不代表本站立场
    赞赏 分享