讓crond以秒爲單位執行任務的方法(如每隔3秒)

昨天寫了一個需求的應用腳本,根據實際需求最好能使它每隔3秒鐘自動執行一次,可是crond似乎只支持到分,怎麼辦呢?

第一種方法:

當然首先想到的是寫一個觸發的腳本,在觸發腳本中使用死循環來解決此問題,如下:
cat kick.sh
--------
#!/bin/bash
while : ;do
        /home/somedir/scripts.sh 2>/dev/null &
        sleep 3
done
-----------
注意第一次運行時請不要使用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也是需要一定時間的,即使已經加了&符號放到了後臺執行也會存在一定的誤差。如果對於精確度要求不高,推薦使用第二種方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章