2010年8月12日

[Linux/Unix] 讓 script 在登出後仍可繼續在背景執行 - at 排程

之前的文章中曾經提到,因為改了 cron job 的執行時間,導致 awstats.pl 執行失敗,必須重跑 cron job。由於是在週末發現這個狀況,因此我透過 VPN 連回公司下指令 (sh /path/to/awstats.pl -update ...),但由於 VPN 有限制幾分鐘內沒有向 server 要求資料就會自動斷線,但 awstats.pl 分析一個網站往往要耗時 15~20 分鐘,且 VPN 連線過程中若登出 server (手動 or 被踢出),則執行中的 script 就會被中斷了,最後發現利用 at 排程 + 背景執行就可以解決這個問題。

只要輸入 at HH:mm YYYY-MM-DD,按 Enter 後,再輸入「perl /path/to/awstats.pl -update ... &」,按 Enter,最後按 ctrl+d 結束 at 排程的編輯即可。

其中關於 at 排程的設定可參考:鳥哥-僅執行一次的工作排程,至於如何讓 script 於背景執行,請參考:鳥哥-job control的管理

利用 at 排程設定的工作,即使在執行此排程的帳號登出系統的狀況下仍然可以正確執行,就和利用 cron job 執行排定的工作一樣。

當然要對每個網站都手動輸入一次指令也太麻煩了,最好是把所有的 awstats.pl -update 指令包成一個 .sh 檔案,之後就只要執行那個 .sh 檔就可以啦!

參考資料:

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D