2011-11-12 96 views
1

在我的crontab文件我執行腳本像這樣(我編輯使用sudo crontab -e在crontab):cron作業終止早期

01 * * * * bash /etc/m/start.sh 

腳本運行一些其他的腳本,像這樣:

sudo bash -c "/etc/m/abc.sh --option=1" & 
sleep 2 
sudo bash -c "/etc/m/abc.sh --option=2" & 

當cron運行腳本start.sh,我做了ps aux | grep abc.sh,我看到abc.sh腳本正在運行。

幾秒鐘後,腳本不再運行,即使abc.sh需要幾小時才能完成。

如果我從命令行執行sudo bash /etc/m/start.sh &,一切正常(abc.sh腳本在後臺運行幾個小時直到它們完成)。

如何調試?

有什麼我正在做的是阻止這些腳本在後臺運行,直到他們完成?

回答

4

您正在啓動的程序可能期望終端將其輸出發送到或接收輸入。

如果你設置了MAILTO=變量,你必須安裝了sendmail的(類似的)守護進程,你會得到該錯誤消息(S)後打印,如果有任何一個電郵:

[email protected] 
01 * * * * bash /path/to/something.sh 

另一種方法來調試,可運行在命令行腳本,同時重定向所有輸入和輸出:

$ sudo bash -c "foo.sh" > output_file 2>&1 < /dev/null 

此外,系統日誌文件(通常在/var/log發現)可能包含有用的提示。