Linux系统使用crontab命令实现秒级定时任务(例如:每隔几秒执行数据采集) - Go语言中文社区

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

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq15577969/article/details/103077207
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-15 17:42:29
  • 阅读 ( 909 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢