linux crontab 实现每秒执行
关于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
~