讓crond以秒爲單位執行任務的方法

昨天寫了一個需求的應用腳本,根據實際需求最好能使它每隔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也是須要必定時間的,即便已經加了&符號放到了後臺執行也會存在必定的偏差。若是對於精確度要求不高,推薦使用第二種方法。

相關文章
相關標籤/搜索