如何让Linux定时任务crond以秒为单位执行(如每隔3秒)
需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢?
第一种方法:
当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如下:
cat kick.sh
#!/bin/bash
while : ;do
/home/somedir/scripts.sh 2>/dev/null &
sleep 3
done
注意第一次运行时请不要使用 bash kick.sh & 这种后台运行的方式,它会僵死的。
可以把它放到计划任务使其运行,然后将计划任务中的此条目删除即可。最后把这个脚本放到 /etc/rc.local 让它每次开机都可以被运行。
第二种方法:
和第一种方法类似,只不过感觉比第一种更便捷一些。
cat cron-seconds.sh
#!/bin/bash
#For excuting the scripts every 3 seconds in crond.
#20100124.WXG for((i=1;i<=20;i++));do /home/somedir/scripts.sh 2>/dev/null &
sleep 3
done
然后写入的crontab里每分钟执行一次,如下
crontab -e
* * * * * /bin/bash /home/somedir/cron-seconds.sh
第三种方法:
那么如何使用计划任务来直接实现呢?
最后解决方案如下,经验证,脚本运行非常稳定。
crontab -e
## For excuting scripts.sh every 3 seconds##on 2014-10-15
*/1 * * * * /home/somedir/scripts.sh
*/1 * * * * sleep 3 && /home/somedir/scripts.sh
*/1 * * * * sleep 6 && /home/somedir/scripts.sh
*/1 * * * * sleep 9 && /home/somedir/scripts.sh
*/1 * * * * sleep 12 && /home/somedir/scripts.sh
*/1 * * * * sleep 15 && /home/somedir/scripts.sh
*/1 * * * * sleep 18 && /home/somedir/scripts.sh
*/1 * * * * sleep 21 && /home/somedir/scripts.sh
*/1 * * * * sleep 24 && /home/somedir/scripts.sh
*/1 * * * * sleep 27 && /home/somedir/scripts.sh
*/1 * * * * sleep 30 && /home/somedir/scripts.sh
*/1 * * * * sleep 33 && /home/somedir/scripts.sh
*/1 * * * * sleep 36 && /home/somedir/scripts.sh
*/1 * * * * sleep 39 && /home/somedir/scripts.sh
*/1 * * * * sleep 42 && /home/somedir/scripts.sh
*/1 * * * * sleep 45 && /home/somedir/scripts.sh
*/1 * * * * sleep 48 && /home/somedir/scripts.sh
*/1 * * * * sleep 51 && /home/somedir/scripts.sh
*/1 * * * * sleep 54 && /home/somedir/scripts.sh
*/1 * * * * sleep 57 && /home/somedir/scripts.sh
#-----------------------------------------------------------------
他的思路是:先每隔1秒钟触发定时任务,然后又休眠 3秒、6秒、9秒等间隔 来执行具体的Shell脚本。
我还是比较倾向于使用第三种方法的。因为第一种方法和第二种方法并不是严格的间隔3秒执行的,会大于3秒,因为执行scripts.sh也是需要一定时间的,即使已经加了&符号放到了后台执行也会存在一定的误差。如果对于精确度要求不高,推荐使用第二种方法。
工作中的一次用 PHP脚本每隔3秒钟去监控一个Memcached代理服务器Magent的运行状态
crontab -e
#-----------------------------------------------------------------
*/1 * * * * /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 3 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 6 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 9 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 12 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 15 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 18 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 21 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 24 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 27 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 30 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 33 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 36 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 39 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 42 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 45 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 48 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 51 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 54 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
*/1 * * * * sleep 57 && /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>&1
#-----------------------------------------------------------------
--> 一般计划任务的问题大部分是出在环境变量上面, 要么就写绝对路径,要么就在脚本的开头加载/etc/profile,如 下条命令行没有被成功执行
00 01 * * * php /usr/local/nginx/www/sjf/crontab.php production Daemon delInvalidFans >/dev/null 2>&1
延伸阅读:
如何让Linux定时任务crond以秒为单位执行(如每隔3秒)的更多相关文章
- linux定时任务crond export变量问题
linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...
- Linux定时任务--Crond使用教程
Linux定时任务--Crond使用教程 1. 介绍Crond crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后 ...
- linux定时任务crond那些事!
1.定时任务crond介绍 1.1 crond是什么 crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护 ...
- linux 定时任务 Crond Crontab
定时任务http://www.cnblogs.com/chensiqiqi/p/6367890.html http://www.cnblogs.com/chensiqiqi/p/6389611.htm ...
- Linux 定时任务 Crontab命令 详解
前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- linux 定时任务 cron,利用cron进程保活
cron定时任务 crond服务操作命令 /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service ...
- Linux系统定时任务crond那些事
1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/ linux系统安装完操作 ...
- Linux:crond(crontab)定时任务
一..定义 Crond 是linux系统中用来定期执行命令或指定程序任务的一种服务或者软件.一般在安装完系统时,crond会默认存在. crond默认每分钟会检查系统中是否有需要执行的定时任务.如果有 ...
随机推荐
- Linux Kernel代码艺术——系统调用宏定义
我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量.宏.函数等的定义处.但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数 ...
- 洛谷P1341 无序字母对[无向图欧拉路]
题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...
- 第39课 Qt中的事件处理(下)
1. 事件的传递过程 (1)操作系统检测到用户动作时,会产生一条系统消息,该消息被发送到Qt应用程序 (2)Qt应用程序收到系统消息后,将其转化为一个对应的QEvent事件对象,并调用QObject: ...
- TortoiseSVN 中 一个 Merge revisions to.. 小坑
注意: 不能只选头与尾svn号, 一定要全选 !!全选 !!全选 !!
- jmeter(八)断言
jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 使用断言 ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题
庞大的业务系统,特别是需要有离线作业操作支持的核心业务系统,需要有强大的基础数据同步功能,基础数据有在增加.有在变动.有在失效,同时有大量的客户端全天侯的在连接服务器.不间断的在处理核心数据. 经过2 ...
- js 数组处理函数
本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...
- C#软件设计——小话设计模式原则之:依赖倒置原则DIP
前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...
- Asp.Net Core 项目搭建 基础配置 和MySql 的使用
一.开发环境准备 1.安装Visual Studio 2015,我这里安装的是专业版. 2.安装.NET Core SDK相关 需要安装 Visual Studio 2015 update3和NET ...