簡體   English   中英

我怎么能解決這個cron工作?

[英]How else can I troubleshoot this cron job?

我一直在工作(和搜索)讓這個cron job / python腳本運行一段時間了。 但是,它顯然不起作用。 我不確定如何解決原因,我在其他SO問題中嘗試了一些我在這里找到的東西。

腳本的路徑:/home/phil/cron_jobs/octoStatus.py

我希望cron每分鍾都跑一次。

Crontab.txt文件:

*/1 * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt

octolog.txt用於捕獲STDOUT和STDERR信息。 輸出“sudo tail / var / log / cron”

Jul  3 10:20:00 bsd /usr/sbin/cron[83876]: (root) CMD (/usr/libexec/atrun)
Jul  3 10:20:00 bsd /usr/sbin/cron[83877]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Jul  3 10:21:00 bsd /usr/sbin/cron[83903]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Jul  3 10:22:00 bsd /usr/sbin/cron[83934]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)

它似乎按照需要每分鍾運行一次。 但是,腳本的預期結果沒有發生。 octolog.txt也沒有被創建。 當我手動運行cron-log中顯示的確切語句時,一切都按預期正常工作,並創建octolog.txt文件。

我在FreeBSD上運行它,然后我去查看/ var / log / syslog,但它不存在。 我是FreeBSD的新手,但我不確定在這種情況下這意味着什么,但我想我會提到它。

我不確定其他信息會有什么幫助,因為我被困住了。 謝謝。 菲爾

首先,每分鍾運行一次腳本,你不需要*/1 默認情況下,Cron每分鍾運行一次,因此:

* * * * * /path/to/command

接下來,您的重定向可能會被破壞。 bash手冊頁的“重定向標准輸出和標准錯誤”下列出了&>格式,所以我認為這就是你要做的。 但是FreeBSD的/bin/sh 不是bash 所以:

* * * * * /path/to/command >/path/to/output.txt 2>&1

這會將stdout發送到您的文件,並將stderr復制到stdout。

這讓我們:

* * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py > octolog.txt 2>&1

另請注意,根據man 5 crontab ,您可以在crontab文件中設置MAILTO變量,該變量將把作業中的輸出/錯誤定向到電子郵件地址。

請注意, cron使用的PATH可能不包含/usr/local/bin ,其中安裝了python。 如果您的octoStatus.py腳本包含“shebang”,那么您可以直接執行它。 否則,您將需要提供python二進制文件的完整路徑,或者向您的crontab添加一個PATH變量(類似於我上面提到的MAILTO)。 在所有情況下,您都可以通過閱讀man 5 crontab來獲取有關格式化的說明。

我建議您使用append模式直接從python腳本寫入文件。

也只是猜測,但我認為你應該給出輸出文件的絕對路徑,如評論中所述,如python home/phil/cron_jobs/octoStatus/octoStatus.py &> /home/phil/cron_jobs/octoStatus/octolog.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM