1 crontab 的延時: 原理:通過延時方法 sleep N 來實現每N秒執行。
crontab -e 輸入以下語句,然后 :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
注意:
60必須能整除間隔的秒數(沒有余數),例如間隔的秒數是2,4,6,10,12等。
如果間隔的秒數太少,例如2秒執行一次,這樣就需要在crontab 加入60/2=30條語句。不建議使用此方法,可以使用下面介紹的第二種方法。
2 shell 腳本實現
crontab.sh
#!/bin/bash step=2 #間隔的秒數,不能大於60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/fdipzone/php/crontab/tolog.php') sleep $step done exit 0
crontab -e 輸入以下語句,然后:wq 保存退出。
# m h dom mon dow command * * * * * /home/fdipzone/php/crontab/crontab.sh
使用以下命令查看結果
fdipzone@ubuntu:~/php/crontab$ tail -f run.log
原理:在sh使用for語句實現循環指定秒數執行。
注意:如果60不能整除間隔的秒數,則需要調整執行的時間。例如需要每7秒執行一次,就需要找到7與60的最小公倍數,7與60的最小公倍數是420(即7分鍾)。
則 crontab.sh step的值為7,循環結束條件i<420, crontab -e可以輸入以下語句來實現
# m h dom mon dow command */7 * * * * /home/fdipzone/php/crontab/crontab.sh
參考網上,僅供學習交流
歡迎交流反饋