linux crontab 实现每秒执行(转)
linux crontab 命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,可以有两个方法实现。
1.使用延时来实现每N秒执行
创建一个php做执行动作,非常简单,就是把当前时间写入log。
- <?php
- file_put_contents('/home/fdipzone/php/crontab/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND);
- ?>
crontab -e 输入以下语句,然后 :wq 保存退出。
- * * * * * php /home/fdipzone/php/crontab/tolog.php
- * * * * * sleep 10; php /home/fdipzone/php/crontab/tolog.php
- * * * * * sleep 20; php /home/fdipzone/php/crontab/tolog.php
- * * * * * sleep 30; php /home/fdipzone/php/crontab/tolog.php
- * * * * * sleep 40; php /home/fdipzone/php/crontab/tolog.php
- * * * * * sleep 50; php /home/fdipzone/php/crontab/tolog.php
使用 tail -f 查看执行情况,可以见到log每10秒被写入一条记录。
- fdipzone@ubuntu:~$ tail -f /home/fdipzone/php/crontab/run.log
- 2014-03-31 21:47:01
- 2014-03-31 21:47:11
- 2014-03-31 21:47:21
- 2014-03-31 21:47:31
- 2014-03-31 21:47:41
- 2014-03-31 21:47:51
- 2014-03-31 21:48:01
原理:通过延时方法 sleep N 来实现每N秒执行。
注意:
60必须能整除间隔的秒数(没有余数),例如间隔的秒数是2,4,6,10,12等。
如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法,可以使用下面介绍的第二种方法。
2.编写shell脚本实现
crontab.sh
- #!/bin/bash
- step=2 #间隔的秒数,不能大于60
- for (( i = 0; i < 60; i=(i+step) )); do
- $(php '/home/fdipzone/php/crontab/tolog.php')
- sleep $step
- done
- exit 0
crontab -e 输入以下语句,然后:wq 保存退出。
- # m h dom mon dow command
- * * * * * /home/fdipzone/php/crontab/crontab.sh
使用 tail -f 查看执行情况,可以见到log每2秒被写入一条记录。
- fdipzone@ubuntu:~/php/crontab$ tail -f run.log
- 2014-03-31 22:23:01
- 2014-03-31 22:23:03
- 2014-03-31 22:23:06
- 2014-03-31 22:23:08
- 2014-03-31 22:23:10
- 2014-03-31 22:23:12
- 2014-03-31 22:23:14
- 2014-03-31 22:23:16
- 2014-03-31 22:23:18
- 2014-03-31 22:23:20
- 2014-03-31 22:23:22
- 2014-03-31 22:23:25
- 2014-03-31 22:23:27
- 2014-03-31 22:23:29
- 2014-03-31 22:23:31
- 2014-03-31 22:23:33
- 2014-03-31 22:23:35
- 2014-03-31 22:23:37
- 2014-03-31 22:23:39
- 2014-03-31 22:23:41
- 2014-03-31 22:23:44
- 2014-03-31 22:23:46
- 2014-03-31 22:23:48
- 2014-03-31 22:23:50
- 2014-03-31 22:23:52
- 2014-03-31 22:23:54
- 2014-03-31 22:23:56
- 2014-03-31 22:23:58
- 2014-03-31 22:24:00
原理:在sh使用for语句实现循环指定秒数执行。
注意:如果60不能整除间隔的秒数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。
则 crontab.sh step的值为7,循环结束条件i<420, crontab -e可以输入以下语句来实现
- # m h dom mon dow command
- */7 * * * * /home/fdipzone/php/crontab/crontab.sh
linux crontab 实现每秒执行(转)的更多相关文章
- Linux crontab 实现每秒执行
Linux crontab 实现每秒执行 linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 创建一个php做执 ...
- linux crontab 实现每秒执行的实例
linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. 1.使用延时来实现每N秒执行 原理:通过延时方法 sleep N 来实现每N秒执行. 创 ...
- Linux crontab 每5秒钟执行一次 shell 脚本 的方法
Linux crontab 每5秒钟执行一次 shell 脚本 的方法 由于 Linux 的 crontab 的定时命令格式如下: minute hour day-of-month month-of- ...
- 【Linux】 crontab 实现每秒执行
linux crontab 命令,最小的执行时间是一分钟, 如果要在小于一分钟执行.就要换个方法来实现 1 crontab 的延时: 原理:通过延时方法 sleep N 来实现每N秒执行. cr ...
- linux中crontab实现以秒执行任务
用crontab+sleep实现以秒执行任务 crontab -e * * * * * /bin/date >>/tmp/date.txt * * * * * sleep 10s; /bi ...
- crontab实现每秒执行
crontab: #!/bin/bash step=$1 #每多少秒执行一次 ; i < ; i=(i+step) )); do date +%Y%m%d' '%H:%M:%S >> ...
- LINUX下实现按秒执行计划任务
由于linux最小单位为分,但是很多需求上需要按秒执行,如30秒请求一个URL地址之类的,思路很简单就是修改计划任务脚本用循环控制,代码如下: #!/bin/bash PATH=/bin:/sbin: ...
- Linux crontab命令:循环执行定时任务(详解版)
前面学习了 at 命令,此命令在指定的时间仅能执行一次任务,但在实际工作中,系统的定时任务一般是需要重复执行的.而 at 命令显然无法满足需求,这是就需要使用 crontab 命令来执行循环定时任务. ...
- Linux crontab 在每月最后一天执行
59 23 * * * if [ `date +%d -d tomorrow` = 01 ]; then; command(/usr/bin/curl -s -o temp.txt http:// ...
随机推荐
- magento添加分类属性
在magento中给产品添加自定义属性是很容易实现在后台就可以很轻易添加,但是给分类就不行了,magento本身没有提供给category添加自定义属性.在实际的运用过程中我们想给cagegory添加 ...
- 用UltralSO安装CentOS 和 Ubuntu
UltralSO是一个U盘制作工具,这几天用UltralSO安装了CentOS和Ubuntu 制作这两个U盘启动程序的区别是,CentOS安装完后,需要把.iso文件拷贝到U盘中,而且CentOS文件 ...
- css 包含的图片和style="display:none"可以避免图片加载,可以节省网络流量
从别人那儿学到一招:先记录下来: <head> <meta charset="UTF-8"> <title>Document</title ...
- SpringMVC 产品笔记
假设我是springMVC的产品经理,我会怎么做? 恩,题目太大,能力不够,缓一缓. http://jinnianshilongnian.iteye.com/category/231099 http: ...
- 关于Highcharts图表组件动态修改属性的方法(API)总结之Series
Highcharts图表组件内的Series很重要,如果说Categries是其大脑,那么Series就是其心脏.这两者才是Highcharts图表组件的重中之重啊.接下来就为大家介绍关于设置Seri ...
- 关于FireFox类VIM插件。VimPerator
说实话现在一直非常喜欢VIM的那种操控方式.当然我不是一个程序员,只是觉得处理文本的时候,那种效率很快.而且不用来回再鼠标跟键盘之间的切换也让我感觉很舒服. 以前一直在想如果开网页的时候也能那样得话不 ...
- nethogs 实时查看进程使用流量情况。
源码编译安装. 下载地址:http://sourceforge.net/projects/nethogs/?source=directory 下载了 tar 解压. make && m ...
- java03实验截图
- JavaWeb学习记录(九)——Cookie的增加、删除、查看
一.servlet功能代码: public void doGet(HttpServletRequest request, HttpServletResponse response) ...
- HTML中特殊字符和与之对应的ASCII代码
ASCII代码是说明了在html中每个特殊字符的属性以及字符的简要说明.在使用html时,如何把ASCII代码添加到网页中.例如版权符号'©'在html中可以通过 "©"来显示. ...