Linux - task scheduler setting by crontab, at commands

網路上有很多教學提到如何設定Linux下的例行性工作排程,尤其鳥哥這篇寫得很詳細!

在此我要記錄的是我自己在使用crontab、at等指令的心得。

前幾篇我有寫到我自己寫了一個shell script來執行一支c程式,這支c程式會去執行我指定的目錄

下的rawdata,當它執行完時會輸出到指定的output dir內。現在,我的工作很簡單的是我要去執

行6000個檔案,分成60個目錄,我的server一次只針對一個目錄的一百個檔案做計算,在測

試之後,發現一次計算完需要花3個小時左右,但我還有59個目錄等待要計算,因此就想到去

找找設定排程的指令,在鳥哥這篇即找到了相關的教學。

crontab

一開始小弟就先使用crontab來設定我要執行的任務,透過# crontab -e來編輯我要執行的指令

,在如vi的模式下,我試著編輯了一個指令,如下:

30 22 22 11 5 nohup sh /home/ben/runBaseSH/run_base.sh 1 &

在11月22日禮拜五的時間點晚上22:30之下,crontab幫我執行後面的指令,當下的時間點到了

我的script程式有去執行c程式,利用top去查詢此c程式在上面也有出現一百支正在Run的情況

,但很詫異的是執行到2分30秒,這支c程式竟然消失了,讓我覺得有點傻眼,但也找不出個

所以然,因為透過自行的手動執行是不會出現這種情況的!後來想說crontab為循環執行的排

程,也就是在不指定天、月、禮拜幾時,此排程會每天在幾點幾分去執行地!也許我們該找

的是一次性執行的排程工具,不用大材小用XD

at

透過at的一次性排程執行,使用上也很簡單,如下:

# at 23:30 2013-11-22
at> nohup sh /home/ben/runBaseSH/run_base.sh 1 &
at><EOT> => (按ctrl+d即<EOT>,離開此模式)

當下您可以利用at -l去查詢目前有哪些指令在等待,當執行完時就會消失!一樣地top去查詢

執行情況,竟然就很順利地執行下去,雖然說不上是什麼原因,但幸好能就此完成此任務!

詳細的指令使用情況可以去參考鳥哥的文章,真的是受益良多囉!

留言