需要用到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
#-----------------------------------------------------------------


crontab定时任务不执行

--> 一般计划任务的问题大部分是出在环境变量上面, 要么就写绝对路径,要么就在脚本的开头加载/etc/profile,如 下条命令行没有被成功执行

00 01 * * * php /usr/local/nginx/www/sjf/crontab.php production Daemon delInvalidFans >/dev/null 2>&1

延伸阅读:

Linux 定时任务 Crontab命令 详解

如何让Linux定时任务crond以秒为单位执行(如每隔3秒)的更多相关文章

  1. linux定时任务crond export变量问题

    linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...

  2. Linux定时任务--Crond使用教程

    Linux定时任务--Crond使用教程 1. 介绍Crond crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后 ...

  3. linux定时任务crond那些事!

    1.定时任务crond介绍 1.1 crond是什么 crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护 ...

  4. linux 定时任务 Crond Crontab

    定时任务http://www.cnblogs.com/chensiqiqi/p/6367890.html http://www.cnblogs.com/chensiqiqi/p/6389611.htm ...

  5. Linux 定时任务 Crontab命令 详解

    前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...

  6. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  7. linux 定时任务 cron,利用cron进程保活

    cron定时任务 crond服务操作命令 /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service ...

  8. Linux系统定时任务crond那些事

    1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/ linux系统安装完操作 ...

  9. Linux:crond(crontab)定时任务

    一..定义 Crond 是linux系统中用来定期执行命令或指定程序任务的一种服务或者软件.一般在安装完系统时,crond会默认存在. crond默认每分钟会检查系统中是否有需要执行的定时任务.如果有 ...

随机推荐

  1. Linux Kernel代码艺术——系统调用宏定义

    我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量.宏.函数等的定义处.但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数 ...

  2. 洛谷P1341 无序字母对[无向图欧拉路]

    题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...

  3. 第39课 Qt中的事件处理(下)

    1. 事件的传递过程 (1)操作系统检测到用户动作时,会产生一条系统消息,该消息被发送到Qt应用程序 (2)Qt应用程序收到系统消息后,将其转化为一个对应的QEvent事件对象,并调用QObject: ...

  4. TortoiseSVN 中 一个 Merge revisions to.. 小坑

    注意: 不能只选头与尾svn号, 一定要全选 !!全选 !!全选 !!

  5. jmeter(八)断言

    jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 使用断言 ...

  6. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题

    庞大的业务系统,特别是需要有离线作业操作支持的核心业务系统,需要有强大的基础数据同步功能,基础数据有在增加.有在变动.有在失效,同时有大量的客户端全天侯的在连接服务器.不间断的在处理核心数据. 经过2 ...

  7. js 数组处理函数

    本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...

  8. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...

  9. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...

  10. Asp.Net Core 项目搭建 基础配置 和MySql 的使用

    一.开发环境准备 1.安装Visual Studio 2015,我这里安装的是专业版. 2.安装.NET Core SDK相关 需要安装  Visual Studio 2015 update3和NET ...