Linux系统使用crontab命令实现秒级定时任务(例如:每隔几秒执行数据采集)

方法一:crontab 延时

原理:crontab命令的功能是在一定的时间间隔调度一些命令的执行,通过延时方法 sleep N  来实现每N秒执行。

crontab -l -------------- 查看当前用户的crontab

crontab -e -------------- 编辑crontab

crontab -r ------------- 删除crontab

service crond stop ------------- 停止crontab任务
service crond start------------- 启动crontab任务
service crond restart ------------- 重启crontab任务
service crond status------------- 查看crontab状态

1、首先,在命令行中键入:

crontab -e

之后就会打开一个文件,并且是非编辑状态,则是vi的编辑界面,通过敲键盘上的i,进入编辑模式,就可以编辑内容。这个文件中的每一行就是一个定时任务,我们新建一行,就是新建一条定时任务(这一行内需要按照一定的格式进行书写)。

2、输入以下语句,然后 :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

上面语句的意思就是说通过curl访问这个http://www.test.com这个链接。

我们在使用中主要用到lynx、curl、wget来实现对url的远程访问,而如果要提高效率,直接用php去执行本地php文件是最佳选择,例如:

* * * * * sleep 5; /www/wwwroot/demo/cj

3、注意:

60必须能整除间隔的秒数(没有余数),例如间隔的秒数是2,4,6,10,12等。

如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法,可以使用下面介绍的第二种方法。

4、查看crontab任务执行情况的方法:

查看已经执行过的任务,看 /var/log/cron这个文件就可以,可以以下命令观察

tail -f /var/log/cron

方法二:shell脚本实现

1、新建名为task.sh的脚本文件

vim task.sh

2、在task.sh中写入要执行的命令,如下:

#!/bin/bash  
step=2 #间隔的秒数,不能大于60  
for (( i = 0; i < 60; i=(i+step) )); do  
    $(php '/www/wwwroot/default/index.php')  
    sleep $step  
done  
exit 0

上面的意思是,每隔2秒使用php访问一下 '/www/wwwroot/default/index.php'这个文件

当然了,也可以使用curl定时访问网页链接(数据采集一般都是通过http请求获取)

#!/bin/bash
step=2 #间隔的秒数,不能大于60   
for (( i = 0; i < 60; i=(i+step) )); do  
    $(/usr/bin/curl http://127.0.0.1:88/json/cj.php)
    sleep $step  
done  
exit 0

原理:在sh中使用for语句实现循环指定秒数执行。

3、给task.sh脚本赋予权限

chmod u+x task.sh

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

# m h  dom mon dow   command  
* * * * * /home/task.sh  

5、查看crontab任务详情

tail -f /var/log/cron

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值