昨天寫了一個需求的應用腳本,根據實際需求最好能使它每隔3秒鐘自動執行一次,但是crond彷佛只支持到分,怎麼辦呢?bash
第一種方法:crontab
固然首先想到的是寫一個觸發的腳本,在觸發腳本中使用死循環來解決此問題,以下:ip
cat kick.sh後臺
--------循環
#!/bin/bash方法
while : ;do經驗
/home/somedir/scripts.sh 2>/dev/null &腳本
sleep 3tab
donedi
-----------
注意第一次運行時請不要使用bash kick.sh & 這種後臺運行的方式,它會僵死的。
能夠把它放到計劃任務使其運行,而後將計劃任務中的此條目刪除便可。最後把這個腳本放到/etc/rc.local讓它每次開機均可以被運行。
第二種方法:
和第一種方法相似,只不過感受比第一種更便捷一些。
cat cron-seconds.sh
------------
#!/bin/bash
#For excuting the scripts every 3 seconds in crond.
#20100124.WXG
for((i=1;i<=20;i++));do
/home/somedir/scripts.sh 2>/dev/null &
sleep 3
done
----------------
而後寫入的crontab裏每分鐘執行一次,以下
crontab -e
--------
* * * * * /bin/bash /home/somedir/cron-seconds.sh
---------------
第三種方法:
那麼如何使用計劃任務來直接實現呢?
最後解決方案以下,經驗證,腳本運行很是穩定。
crontab -e
---------------------
## For excuting scripts.sh every 3 seconds##on 2010-01-22
* * * * * /home/somedir/scripts.sh
* * * * * sleep 3 && /home/somedir/scripts.sh
* * * * * sleep 6 && /home/somedir/scripts.sh
* * * * * sleep 9 && /home/somedir/scripts.sh
* * * * * sleep 12 && /home/somedir/scripts.sh
* * * * * sleep 15 && /home/somedir/scripts.sh
* * * * * sleep 18 && /home/somedir/scripts.sh
* * * * * sleep 21 && /home/somedir/scripts.sh
* * * * * sleep 24 && /home/somedir/scripts.sh
* * * * * sleep 27 && /home/somedir/scripts.sh
* * * * * sleep 30 && /home/somedir/scripts.sh
* * * * * sleep 33 && /home/somedir/scripts.sh
* * * * * sleep 36 && /home/somedir/scripts.sh
* * * * * sleep 39 && /home/somedir/scripts.sh
* * * * * sleep 42 && /home/somedir/scripts.sh
* * * * * sleep 45 && /home/somedir/scripts.sh
* * * * * sleep 48 && /home/somedir/scripts.sh
* * * * * sleep 51 && /home/somedir/scripts.sh
* * * * * sleep 54 && /home/somedir/scripts.sh
* * * * * sleep 57 && /home/somedir/scripts.sh
#-----------------------------------------------------------------
好好想一想就能夠明白其中的道理了。
我仍是比較傾向於使用第三種方法的。由於第一種方法和第二種方法並非嚴格的間隔3秒執行的,會大於3秒,由於執行scripts.sh也是須要必定時間的,即便已經加了&符號放到了後臺執行也會存在必定的偏差。若是對於精確度要求不高,推薦使用第二種方法。