2017-08-03 67 views
0

我想運行一個python3腳本來檢查特定條件的電子郵件,每天在特定的時間。python代碼通過cron作業沒有運行

我可以看到crontab調用這些命令,但腳本不會給我我需要的結果,即.e.似乎並沒有運行。我可以看到在syslog cron的執行:

8月3日16時25分01秒樹莓派/ usr/sbin目錄/ CRON [4597]:(PI)CMD(坎德拉/家/ PI/pythonscripts)

8月3日16時25分01秒樹莓派/ usr/sbin目錄/ CRON [4598]:(PI)CMD(命令和python3 dfj_gmail_test_v1g.py> /home/pi/pythonscripts/cronlog.log)

8月3日16時25分:02 raspberrypi/USR/SBIN/CRON [4595] :(CRON)信息(未安裝MTA,丟棄輸出)

python腳本需要運行ch eck gmail,如果在某個主題中發現某個電子郵件,它應該通過我的樹莓上的GPIO打開一個LED,這對我來說比對其他任何事情都更爲考驗。如果我從命令行本身運行腳本(使用我的crontab中的行),腳本執行檢查並點亮led。所以劇本本身很好。有關如何獲得更多信息,爲什麼python腳本不能通過cron工作的任何想法?

如果需要,我可以添加蟒蛇3碼

回答

0

看來你有兩個不同的cron作業,一個做

cd /home/pi/pythonscripts 

和其他

sudo python3 dfj_gmail_test_v1g.py > /home/pi/pythonscripts/cronlog.log 

這些都是獨立工作,第一個不會影響第二個作業,所以第二個作業的工作目錄不會被改變,腳本也不會被找到。如果你想要這個工作,你需要使用一個命令兩個,如:

cd /home/pi/pythonscripts && sudo python3 dfj_gmail_test_v1g.py > /home/pi/pythonscripts/cronlog.log 

或者給完全合格的路徑蟒蛇文件,如果工作目錄並不重要:

sudo python3 /home/pi/pythonscripts/dfj_gmail_test_v1g.py 

此外,從crontab中使用sudo的instad,請考慮直接使用root用戶的contab。你應該重定向標準錯誤標準輸出到你的日誌文件,這將使你更加的相關詳細輸出錯誤的情況下,例如:

... > /home/pi/pythonscripts/cronlog.log 2>&1 

或安裝MTA,然後cront作業的輸出將被髮送到所有者作爲電子郵件。

+0

這是很好的建議。有沒有辦法讓我可以在1分鐘的時間間隔內執行相同的cron執行,而不是設定時間? –

+0

是的,您可以使用'/間隔'指定一個間隔,例如'*/1 * * * *'會每分鐘執行一次cronjob。有關更多示例,請參見[crontab(5)](http://man7.org/linux/man-pages/man5/crontab.5.html#EXAMPLE_CRON_FILE)手冊頁。 – mata