crontab 每隔幾秒執行

小亮520cl發表於2015-08-04

第一種方法:
當然首先想到的是寫一個觸發的指令碼,在觸發指令碼中使用死迴圈來解決此問題,如下:


  1. cat kick.sh
  2. #!/bin/bash
  3. while : ;do
  4. /home/somedir/scripts.sh 2>/dev/null &
  5. sleep 3
  6. done

注意第一次執行時不要使用 bash kick.sh & 這種後臺執行的方式,它會僵死的。
可以把它放到計劃任務使其執行,然後將計劃任務中的此條目刪除即可。

第二種方法:


點選(此處)摺疊或開啟

  1. cat cron-seconds.sh
  2. #!/bin/bash
  3. for((i=1;i<=20;i++));do
  4. /home/somedir/scripts.sh 2>/dev/null &
  5. sleep 3
  6. done

然後寫入的crontab裡每分鐘執行一次,如下

1
2
crontab -e
15-20 20 * * * /bin/bash /home/somedir/cron-seconds.sh

第三種方法:
那麼如何使用計劃任務來直接實現呢?
最後解決方案如下,經驗證,指令碼執行非常穩定。

  1. ## For excuting scripts.sh every 3 seconds##on 2014-10-15
  2. */1 * * * * /home/somedir/scripts.sh
  3. */1 * * * * sleep 3 && /home/somedir/scripts.sh
  4. */1 * * * * sleep 6 && /home/somedir/scripts.sh
  5. */1 * * * * sleep 9 && /home/somedir/scripts.sh
  6. */1 * * * * sleep 12 && /home/somedir/scripts.sh
  7. */1 * * * * sleep 15 && /home/somedir/scripts.sh
  8. */1 * * * * sleep 18 && /home/somedir/scripts.sh
  9. */1 * * * * sleep 21 && /home/somedir/scripts.sh
  10. */1 * * * * sleep 24 && /home/somedir/scripts.sh
  11. */1 * * * * sleep 27 && /home/somedir/scripts.sh
  12. */1 * * * * sleep 30 && /home/somedir/scripts.sh
  13. */1 * * * * sleep 33 && /home/somedir/scripts.sh
  14. */1 * * * * sleep 36 && /home/somedir/scripts.sh
  15. */1 * * * * sleep 39 && /home/somedir/scripts.sh
  16. */1 * * * * sleep 42 && /home/somedir/scripts.sh
  17. */1 * * * * sleep 45 && /home/somedir/scripts.sh
  18. */1 * * * * sleep 48 && /home/somedir/scripts.sh
  19. */1 * * * * sleep 51 && /home/somedir/scripts.sh
  20. */1 * * * * sleep 54 && /home/somedir/scripts.sh
  21. */1 * * * * sleep 57 && /home/somedir/scripts.sh

先每隔1秒鐘觸發定時任務,然後又休眠 3秒、6秒、9秒等間隔 來執行具體的Shell指令碼。
第一種方法和第二種方法並不是嚴格的間隔3秒執行的,會大於3秒,因為執行scripts.sh也是需要一定時間的,即使已經加了&符號放到了後臺執行也會存在一定的誤差。如果對於精確度要求不高,推薦使用第二種方法。

此文來自http://blog.snsgou.com/post-356.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1761303/,如需轉載,請註明出處,否則將追究法律責任。

相關文章