2011-01-13 68 views
3

我已經創建了一個Python腳本,我想通過Ubuntu服務器上的cronjob每日運行一次。爲什麼Python腳本可以從CLI工作,但是從cron作業調用時不能?

這是怎麼這個腳本會在命令行中運行:

python /home/username/public_html/IDM_app/manage.py cleanUpPosts 

當從CLI調用時,腳本工作正常。
但是,當我嘗試通過cronjob運行腳本時,腳本無法正常運行。 日誌文件顯示正在請求腳本,但它們未顯示腳本未正確執行的原因。

我將Python日誌記錄添加到腳本。當從CLI調用腳本時,記錄會正確發生。當從cron調用時,python日誌記錄無法寫入它的日誌文件。

我懷疑問題是cronjob在請求腳本時沒有運行shell。

我似乎無法找到任何地方的cron守護進程記錄它的錯誤。

我創建了/var/log/cron.log
但是,這似乎並沒有更新。

因爲我認爲問題源於ENV變量,我試圖讓cronjob爲自己顯示ENV。

這裏是我的crontab是什麼樣子:
$的crontab -u用戶名-e

m h dom mon dow command 
43 17 * * * /bin/sh python /home/username/public_html/IDM_app/manage.py cleanUpPosts 
43 17 * * * python /home/username/public_html/IDM_app/manage.py cleanUpPosts 
45 21 * * * echo "-----------------"; echo "import os; print os.environ" | python 
47 21 * * * /bin/sh echo "------with shell-------"; echo "import os; printos.environ" | python 
[email protected] 

我以爲它會輸出到屏幕上,但事實並非如此。 ENV變量也會在哪裏輸出?

無論如何,這裏是日誌文件:

# tail -n 5 /var/log/*.log 
==> /var/log/auth.log <== 
Jan 13 17:43:01 servername CRON[7901]: pam_unix(cron:session): session opened for user username by (uid=0) 
Jan 13 17:43:01 servername CRON[7902]: pam_unix(cron:session): session opened for user username by (uid=0) 
Jan 13 17:44:48 servername su[7909]: Successful su for root by username 
Jan 13 17:44:48 servername su[7909]: + /dev/pts/0 username:root 
Jan 13 17:44:48 servername su[7909]: pam_unix(su:session): session opened for user root by username(uid=1000) 

==> /var/log/bootstrap.log <== 

==> /var/log/cron.log <== 

==> /var/log/daemon.log <== 

==> /var/log/dpkg.log <== 

==> /var/log/kern.log <== 

==> /var/log/lpr.log <== 

==> /var/log/mail.log <== 

==> /var/log/mysql.log <== 

==> /var/log/pycentral.log <== 

==> /var/log/user.log <== 

我還需要努力讓我能確定爲什麼我的腳本運行不正常?

+1

爲什麼標記爲django? – GreenMatt 2011-01-13 18:24:52

+0

我猜測這是因爲OP正試圖運行一個django管理命令。 – 2011-01-15 08:17:53

回答

5

crontab可能找不到python可執行文件,儘管它可以在CLI中,所以你需要寫下完整的python路徑。您可以從

which python 

Crontab爲腳本提供了一個環境,與正常的用戶環境不同。

+0

41 11 * * */usr/local/bin/python /home/username/public_html/IDM_app/manage.py cleanUpPosts – BryanWheelock 2011-01-13 21:06:24

2
3 17 * * * /bin/sh python /home/username/public_html/IDM_app/manage.py cleanUpPosts 

這條線看起來不對。看起來你正在運行python就好像它是一個shell腳本。