如何讓 crontab 每次執行作業時產生唯一的日誌?

如何讓 crontab 每次執行作業時產生唯一的日誌?

這是 crontab 作業

/usr/local/bin/python2.7 /home/scripts/script.py >> /home/scripts/logs/log.log 2>&1

如何在每次執行作業時產生新日誌?

我很樂意在每次生成日誌檔案時向日誌檔案添加一個遞增的計數器。不知道該怎麼做。

我真的需要運行另一個 cron 作業才能做到這一點嗎?

答案1

您可以使用以下date命令產生唯一的檔案名稱:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/"`date +\%d\%m\%y_\%H\%M\%S`".log 2>&1

編輯:確保避開百分號( \%)。他們有個特殊意義在 cron 和 crontab 中將會回傳錯誤。

這樣,<date_time>.log每次作業執行時都會建立一個新的日誌檔案(稱為 )。

$ date; touch "`date +%d%m%y_%H%M%S`.log"
  Tue Sep 25 04:39:25 CEST 2012
$ ls *log
  250912_043925.log

假設您的腳本運行頻率不超過每秒一次(如果您運行的是簡單的 crontab,則不能),那麼應該沒問題。

如果按照註釋中的建議,您的腳本由不同的使用者執行,您可以將使用者名稱新增至日誌檔案的名稱:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/$(echo -n `whoami`_`date +\%d\%m\%y_\%H\%M\%S`).log 2>&1

相關內容