首页 > 技术文章 > linux crontab 实现每秒执行

quepq 2017-10-26 17:08 原文

关于crontab 定时任务命令的详细解释,可以看这边文章,http://www.cnblogs.com/longjshz/p/5779215.html。

我在实际工作中碰到一个问题,为了提高用户体验,需要每隔10秒钟去执行一个php任务。

正常的crontab定时任务,只有分钟,小时,天,月,周,没有到秒,以下提供两个解决方案,一个是我实际中使用的,一个是我后来优化过好的。

方案一,简单粗暴,在crontab中直接利用sleep命令,间隔时间为10秒,直接跑

* * * * *  /usr/bin/curl  "your url" >> /home/wwwroot/default/test.txt
 
* * * * * sleep 10; /usr/bin/curl "your url">> /home/wwwroot/default/test.txt
 
* * * * * sleep 20; /usr/bin/curl "your url" >> /home/wwwroot/default/test.txt
 
* * * * * sleep 30; /usr/bin/curl "your url" >> /home/wwwroot/default/test.txt
 
* * * * * sleep 40; /usr/bin/curl "your url">> /home/wwwroot/default/test.txt
 
* * * * * sleep 50; /usr/bin/curl "your url" >> /home/wwwroot/default/test.txt
 
方案二,另写一个脚本,在crontba中,每分钟去跑一次,这个脚本中写一个循环,让它跑
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
 
step=10 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
/alidata/server/php/bin/php -f  /data/public_html/sms/cron/tasks_second.php
sleep $step
done
exit 0
~

推荐阅读