【经验总结】超越crontab精度达到秒级的定时调度器

超越crontab精度达到秒级的定时调度器
by mars

     平时大家喜欢用crontab触发一些定时任务,毋庸置疑,crontab时间策略超级灵活,但也有一个最大的弊病,最高只能精确到分钟级。在一些实时性要求很高的场合中,这是远远满足不了需求的。

     其实大家忽略了linux中的另一个命令-watch,功能类似crontab,但是一般在前端运行,每次运行时都清屏,然后把程序结果显示在标准输出上面。因些想实现一个简单的定时监控器的话,最简单的就是用watch命令了,比如 watch 'ifconfig',在屏幕上每隔2秒刷新ifconfig命令运行结果,监控效果是非常之好。

     百闻不如一见,自己动手运行一下watch 'ifconfig',就知道出现神马效果了。

        图片

 

     watch 还支持-n参数,用户可以指定时间间隔,默认是2秒钟一次,远远高于crontab的最高一分钟一次的精度。

     由于watch设计的初衷主要是用来实现屏幕监控,和crontab定时后台调度有点不一样,其实人的智慧是无穷的,我们稍微改造一下,即可得到一高精度版的crontab定时调度器。

     很简单,创建一个crontaben.sh,内容如下

     nohup watch 'date >/tmp/date.tmp' >/dev/null &

     在命令行上运行./crontaben.sh,关掉终端,

     再另外开一个终端,ps -ef|grep watch,是不是会发现有一个watch进程常驻?再去/tmp下观察date.tmp,是不是每2秒钟刷新一次?
    

    图片

 

     当你没接触到此简约有力的神器前,或许你还会思忖着我要不要自己用C/C++写个更强大的定时调度器?或者去sourceforge.net找找有没有开源的项目?

有时候,换位思想,问题就是那么简单,是我们想得太复杂了。

tera补充:
确实是个思路啊,不过脚本被kill ,系统重启等,就不能隔2秒执行了,或者脚本被重复启动了,也是问题,再在crontab里面检测该脚本进程,不存在,或大于一个进程,就处理下,就更好了。

本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.youkuaiyun.com/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值