2012-08-23 152 views
1

我有一個Ubuntu服務器10.linux的cron作業沒有運行

在根的cron我有一個腳本,每天在同一個小時運行。

手動運行腳本它運行良好,但在cron中不運行。

在系統日誌,我得到這個:

Aug 23 09:22:01 database CRON[6884]: (root) CMD (./bkp.sh >> /tmp/bkp.log) 
Aug 23 09:22:01 database CRON[6883]: (CRON) error (grandchild #6884 failed with exit status 2) 

我發現這個問題的可能來源,我在腳本中添加了一些日誌(回聲)...

在腳本執行,它在「函數」定義上退出...

看來我無法訪問命令「函數」

我該如何解決這個問題?

+2

cron環境與您的登錄shell環境不一樣。系統環境變量對於一個不同,例如PATH和庫搜索路徑。你的腳本可能使用了從cron運行時不可用的東西。 – Torp

+0

我該如何解決這個問題?我可以指定用戶運行作業嗎? –

+0

另請參閱http://stackoverflow.com/questions/819944/proper-way-to-run-a-script-using-cron – tripleee

回答

0

這裏是link我在google搜索'cron環境變量'時得到的。它可能有幫助。還有很多其他人喜歡它:)

+0

該cron工作100%,但.... 最近我嘗試更改su的密碼與「sudo su」和「passwd」...運行此命令後,我注意到,沒有影響的su密碼繼續相同...我忽略了這一點,現在我遇到了問題... –

+0

sudo問你的用戶密碼,su爲root密碼... – Torp

0

通過cron推出Shell腳本必須仔細地指定他們正在運行的環境。內cron運行將非交互shell,這意味着他們將無法讀取/etc/profile,其中$PATH通常設置。這意味着您需要指定腳本中調用的所有可執行文件的路徑。

如果你運行了很多cron腳本,可能值得花時間編寫一個小shell腳本,它將定義並導出腳本中使用的環境變量,從$PATH開始。

0

將腳本放在以下目錄中,然後它應該每天運行。

/etc/cron.daily/