說到linux的排程工具,第一個都會想到crontab,crontab的確方便使用,但是剛接觸的時候也是花了不少時間瞭解,紀錄一下最近遇到的狀況,以免自己以後又犯同樣的錯Orz.
Crontab的設計很簡單,用五個時間刻度來執行指令,詳細教學可以看鳥哥的教學.但是我這次在用crontab呼叫shell script卻發生不少白癡問題,上了一課.
為了管理scrapyd,所以需要一支shell script來管理服務的啟動和關閉,一開始是打算從頭自己寫,然後再找資料過程中發現了了這個網頁,可以很簡單的來控制scrapyd.但是當我打算透過crontab來呼叫它時卻發生了一些問題.
- sh放錯位置:我一開始很新手的在crontab寫
路徑\sh run.sh start
,這裏要改成sh 絕對路徑\run.sh start
.
- 環境問題:run.sh程式可以執行,但是scrapyd無法啟動,後來才發現因為我的scrapyd是灌在
virtualenv
底下,透過crontab會找不到指令.
- nohup問題:這個問題我找超久,因為在terminal上都沒問題,後來看到http://stackoverflow.com/questions/14145250/cron-job-doesnt-output-to-nohup-out有問一樣的問題,才知道cron裡面是不需要使用nohup的,果然改掉後就可以正常執行.
因為跟系統不熟,花了將近六小時才把這支程式搞好,紀錄一下血淚教訓.
沒有留言:
張貼留言