方法一: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