Cron

Cron 作業未按預期執行

  • November 13, 2014

所以我有一個 python 腳本,它可以拉下 git/svn/p4 儲存庫並對數據庫進行一些寫入。

我只是試圖自動化這個腳本的執行,並且根據我在 syslog 中看到的它正在執行,即使我嘗試將輸出管道傳輸到的文件正在被創建,但是文件是空的。這是 cron 作業:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag > ~/cronout.log 2&>1

有點難過,不知道從哪裡開始。認為這可能是鑰匙串密碼的要求,而不是什麼。任何想法都會有所幫助!

所以事實證明問題出在 Python 腳本所需的環境變數上,而且它在腳本中太早了,它甚至在它輸出任何東西之前就破壞了腳本。

Cron 沒有正常環境。

此外,拉動 git repos 需要 ssh 密碼,我可以通過使用鑰匙串來解決。

在這篇博文和一些 bash 包裝腳本的幫助下,我能夠讓一切正常工作並實現自動化。

使用 tee 抓取輸出

三通手冊

tee從標準 INPUT/OUTPUT 讀取以寫入文件。我有一個支持我的要求之一的 Python 腳本,並且簡單的“>”重定向失敗。Tee 是獲取輸出的方式。

你的行應該是:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag | tee -a ~/cronout.log 2>&1

**試試這個:**將你的 python 腳本包裝在 /usr/bin/ 目錄中的 #!/bin/bash 腳本中。

然後替換你的行:

10 04 * * * user /usr/bin/myPythonWrapperInBash& > /path/to/log/out 2>&1

Tee 呼叫的解釋

  • $$ -a $$附加文件。
  • Vanilla 呼叫(無標誌)會覆蓋文件,並且您會失去日誌。

引用自:https://unix.stackexchange.com/questions/158888