如何让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默认每分钟会检查系统中是否有需要执行的定时任务.如果有 ...
随机推荐
- SDN:motivation
今天公交车上看了会SDN一本介绍性的书籍,具体名字不记得了.我想,我已经在实验室呆了很久的时间的,接触SDN也有一段时间了.对SDN的一些基本的知识还是需要好好整理一番.当然,这里只是一个随笔,想到什 ...
- 基于网格的分割线优化算法(Level Set)
本文介绍一种网格分割线的优化算法,该方法能够找到网格上更精确.更光滑的分割位置,并且分割线能够自由地合并和分裂,下面介绍算法的具体原理和过程. 曲面上的曲线可以由水平集(level set)形式表示, ...
- 第九章 JQUI
一.什么是插件 ①是遵循一定接口规范编写的程序 ②是原有系统平台功能的扩展和补充 ③只能运行在规定的系统平台下,而不能单独运行 注:由于jQuery插件是基于jQuery脚本库的扩展,所以所有jQue ...
- 破解Java to C# Converter
起因 最近在对接一个第三方平台.该平台只提供了Java版本的SDK,C#版本的还处于敬请期待状态.由于C#可以复用绝大部分代码,便考虑找一个Java到C#的转换器,在试用了几个软件之后,发现还是Jav ...
- bench.sh 跑分测速
#!/bin/bash #==============================================================# # Description: bench te ...
- Prototype原型(创建型模式)
依赖关系的倒置:抽象不应该依赖于实现的细节,实现细节应该依赖于抽象. 原型模式的定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.prototype模式允许一个对象再创建另外一个可 ...
- 当泛型方法推断,扩展方法遇到泛型类型in/out时。。。
说到泛型方法,这个是.net 2.0的时候引入的一个重要功能,c#2.0也对此作了非常好的支持,可以不需要显试的声明泛型类型,让编译器自动推断,例如: void F<T>(T value) ...
- canvas实践1
今天同学遇到问题,我于是就利用了canvas帮他写了个效果,效果如图 我本来在学习不是很想做,但是昨天感觉自己学的有点累就去帮忙做了,我的思路是每次画一个矩形,然后通过rotate旋转让它自身旋转45 ...
- mtr命令详解
原文地址:http://blog.hexu.org/archives/1050.shtml 一般在windows 来判断网络连通性用ping 和tracert,ping的话可以来判断丢包率,trace ...
- JDK历史版本
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html