2016-03-01 160 views
0

我有一個cron作業來運行一個名爲sedcmd.sh的sed shell來預處理一些json數據。當我在正確的目錄我手動運行它與crontab不會運行sed shell

. ./sedcmd.sh 

它的工作原理。外殼本身工作正常。 參考命令的一個內部看起來像

sed -i '/^\s*$/d' /home/school/Desktop/Programs/rawjsondata.txt 

我的cronjob看起來像

5 * * * * . ./home/school/Desktop/Programs/sedcmd.sh 

我得到的錯誤「沒有這樣的文件或目錄下找到」。我究竟做錯了什麼。我三重檢查了任何拼寫錯誤。我也似乎無法從任何其他目錄運行sedcmd.sh,即使我給整個文件路徑,所以它肯定是我做錯了。我對解決方案的想法是

  1. 我應該將sedcmd.sh添加到我的$ PATH或bashrc中,以便我可以從任何地方調用它。我不知道該怎麼做。 或
  2. 弄清楚如何從crontab中正確調用它。我也不知道該怎麼做。
+1

如果將反式詞條更改爲'5 * * * */home/school/Desktop/Programs/sedcmd.sh'(沒有點),該怎麼辦? –

+0

修復它。那爲什麼呢?我認爲這些點是調用shell所必需的。 – Sam

+1

僅當您在相同的目錄中調用文件時。看看[這裏](http://unix.stackexchange.com/a/4432) –

回答

1

當您運行從終端的腳本,你這樣做: ./script_name.sh而是從crontab中執行相同的腳本,你這樣做5 * * * * /path/to/script/script_name.sh

薩姆已經得到了來自評論這個答案,發佈答案作爲社區維基。