Linux crontab 实现秒级定时任务

1   crontab 的延时: 原理:通过延时方法 sleep N  来实现每N秒执行。

crontab -e 输入以下语句,然后 :wq 保存退出。

* * * * * /usr/bin/curl http://www.test.com
* * * * * sleep 5; /usr/bin/curl http://www.test.com
* * * * * sleep 10; /usr/bin/curl http://www.test.com
* * * * * sleep 15; /usr/bin/curl http://www.test.com
* * * * * sleep 20; /usr/bin/curl http://www.test.com
* * * * * sleep 25; /usr/bin/curl http://www.test.com
* * * * * sleep 30; /usr/bin/curl http://www.test.com
* * * * * sleep 35; /usr/bin/curl http://www.test.com
* * * * * sleep 40; /usr/bin/curl http://www.test.com
* * * * * sleep 45; /usr/bin/curl http://www.test.com
* * * * * sleep 50; /usr/bin/curl http://www.test.com
* * * * * sleep 55; /usr/bin/curl http://www.test.com

注意:

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  

使用以下命令查看结果

[email protected]:~/php/crontab$ tail -f run.log  

原理:在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  

原文地址:https://www.cnblogs.com/adolfmc/p/11798425.html

时间: 2024-11-05 12:33:08

Linux crontab 实现秒级定时任务的相关文章

Linux下实现秒级定时任务的两种方案

Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command sleep XX //间隔秒数 done 第二种方案,使用crontab. 我们都知道crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次. 以下方法将每20秒执行一次 crontab -e * * * * * /bin/date* * * * * sleep 20;

Linux下实现秒级定时任务的两种方案(crontab 每秒运行)

第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command sleep XX //间隔秒数 done 第二种方案,使用crontab. 我们都知道crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次. 以下方法将每20秒执行一次 crontab -e * * * * * /bin/date * * * * * sleep 20; /bin/date * * * * * sleep 40; /bin

linux crontab 每秒执行定时任务

OK,我们都知道Linux的crontab 可以设置定时执行任务 * * * * * 但是最低是每分钟执行一次任务,之前面试陌陌的时候也被问到过每秒执行一次怎么写,依稀记得当时回答的是 */1   ,应该是这样的......好傻......... 网上找了一些,记录一下吧. 下面就可以每十秒执行一次了,仔细想一下,是这样的把? #* * * * * php /Users/zhangfulin/testsz.php #* * * * * sleep 10; php /Users/zhangfuli

crontab实现秒级任务

对于Linux的crontab的用法来说大家都很熟悉. [email protected]:~# crontab -l #.------------------------------------------------------------------- mintues( 0 - 59 ) #|   .--------------------------------------------------------------- hour   ( 0 - 23 ) #|   |   .----

如何利用crond实现秒级定时任务?

1.问题引出:crond实现定时任务的思路 crond服务默认情况每分钟检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务,而crond配置的书写语法中:"* * * * * command",最低的时间单位是分钟,所以说,一个crond定时任务最多只能执行分钟级的定时任务,这是显然的!但事实情况是,利用crond也是可以实现秒级的定时任务的,既然一个定时任务真的就只能实现分钟级的定时任务,那我几个定时任务同时实现一个功能,是否有可能达到秒级???

Linux Crontab Shell脚本实现秒级定时任务

一.编写Shell脚本crontab.sh #!/bin/bash step=1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/www/php/crontab/crontab.php') sleep $step done exit 0 二.crontab -e 输入以下语句,然后:wq 保存退出 # m h dom mon dow command * * * * * /home/www/php/crontab

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

如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟 如果想以秒为单位执行,应该如何设置呢? 思路 正常情况是在crontab中直接定义要执行的任务,现在我们在中间添加一个脚本文件 自定义一个脚本文件,循环执行要执行的任务,循环中使用sleep来控制间隔秒数 在crontab中添加一个任务,设置为每分钟都执行这个脚本 就是用crontab控制分钟,用脚本内的循环来控制秒 示例 (1) 定义目标任务 用php写了一个测试任务,向文件中写一个时间信

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放 《CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放》来自张戈博客

张戈博客很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了.博客从此走上了经常被人拿来练手的不归之路. 当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题.根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级CC攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为CC终结者. 一.功能申明 分享之前我必须先申明一下,众所周知,DDoS攻击指的是分布式拒绝服务.而CC攻击只是DDoS攻击的一种,本文所阐述的CC攻击,指的是每个IP都以高并

Linux Crontab [定时任务] 命令与参数详解

crontab命令常用于Unix和Linux系统中,用于设置周期性被执行的指令. 该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供读取和执行. 通常,crontab储存的指令被守护进程激活,crond服务常常在后台运行. 通过设定的时间来检查是否有作业需要执行,这类作业一般称为:cron jobs. crontab 文件 crontab文件包含送交cron守护进程的一系列作业和指令. 每个用户可以拥有自己的crontab文件,同时操作系统保存一个针对整个系统的crontab文