我已經創建了一個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 <==
我還需要努力讓我能確定爲什麼我的腳本運行不正常?
爲什麼標記爲django? – GreenMatt 2011-01-13 18:24:52
我猜測這是因爲OP正試圖運行一個django管理命令。 – 2011-01-15 08:17:53