星期四, 8月 13, 2015

Linux排程重覆執行問題

有時排程未跑完,下一個週期的排程又被啟動
雖然自己有想法解這問題,不過這應該一堆神人遇過,一定有厲害的解法
請教了google大神,果然出現超強解法
只要改crontab的指令就好,連程式都不用改

* * * * *  sh '/home/fish/test.sh'  #原寫法
* * * * *  flock -xn /tmp/test.lock -c '/home/fish/test.sh' #flock寫法

注意事項
  1. test.lock 會自動產生,不用理,放在/tmp可避免權限問題
  2. 利用flock,得確定執行角色有test.sh的執行權限

超簡單又不用改程式,爽~~~~~~~~~~~

more~

以上的寫法是當重覆執行時,新的排程就直接放棄不執行
但如果是要執行,但可等個幾分鐘怎麼做哩
只要改參數即可
#等60秒後,再執行(要拿掉n,加上w)
* * * * *  flock -x /tmp/test.lock -w 60 -c '/home/fish/test.sh' 


沒有留言: