秒级别执行脚本的方法

前言:

  crond服务提供分钟级的定时任务,但有的应用场景需要秒级的执行脚本,比如不稳定的应用程序,或者需要高可用的服务等等,整理测试后,有两种办法:1.使用while写一个死循环,并将脚本放入后台执行。2.使用sleep,根据脚本的需求来进行crontab的修改。3.最好在脚本中再补充一个记录进程号的命令,在脚本目录下再创建一个记录进程号的文件,这样就能快速找到对应的进程,来对时间进行管理。甚至可以通过多个脚本之间的交互,来动态的实现对脚本执行间隔的调整。

第一种办法:

#!/bin/bash
while true;do
        echo "hahaha"
        sleep 1
done

  放入后台执行的方法为,在执行脚本的命令后面加上&符号就行

第二种办法(使用前需验证,不同的操作系统不一定能支持如下办法,cron的默认是分钟级别,如果需要秒级别的运行任务,最好不要依赖cron):

使用sleep与crontab结合起来:

复制代码
*/1 * * * * root /script/mstest.sh
*/1 * * * * root sleep 5;/script/mstest.sh
*/1 * * * * root sleep 10;/script/mstest.sh
*/1 * * * * root sleep 15;/script/mstest.sh
*/1 * * * * root sleep 20;/script/mstest.sh
*/1 * * * * root sleep 25;/script/mstest.sh
*/1 * * * * root sleep 30;/script/mstest.sh
*/1 * * * * root sleep 35;/script/mstest.sh
*/1 * * * * root sleep 40;/script/mstest.sh
*/1 * * * * root sleep 45;/script/mstest.sh
*/1 * * * * root sleep 50;/script/mstest.sh
*/1 * * * * root sleep 55;/script/mstest.sh
复制代码

  如上所示,每5s执行一次。需要注意的是,上面的配置是修改/etc/crontab文件的,使用/etc/crontab需要使用加上用户名,而crontab –e 则不需要,redhat系统每分钟定时设置为 * * * * * 而ubuntu为*/1 * * * *

总结:

  相对来说还是第二种方法比较可靠,crontab服务在每次系统重新启动的时候都会自动加载配置文件,而第一种办法需要手动启动,并且不好检查,当然,这种方式对需要暂停脚本的情况来说又不友好了,想了一个办法:修改脚本的名称,而后需要启动脚本的时候,将脚本的名称可以改回来。

posted @   小雨淅淅o0  阅读(344)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示