Cron

兩個 cron 重定向之間的區別

  • June 8, 2021

以下兩種執行方式有什麼區別cron?基本上,我只是想寫入一個文件並查看哪個是首選/正確的:

2 * * * * python script.py >> /tmp/script.log

與:

2 * * * * python script.py >> /tmp/script.log 2>&1

似乎他們都寫入日誌,但也許第一個更頻繁地“刷新”?

大多數輸出是由正常的列印語句完成的:

print('hello')

我認為這相當於在每次列印後sys.stdout隱式寫入。\n

第一個重定向將標準輸出(僅)附加script.py到日誌文件。

如果腳本在標準錯誤通道上產生任何消息(在 Pythonese 中:寫入到sys.stderr),這些消息將照常由 處理cron,即 cron 守護程序將收集它們,並且在作業結束後,將嘗試將它們作為本地發送發送給擁有 cron 作業的使用者的電子郵件。

通常,此類本地電子郵件將由本地郵件傳輸代理(簡稱 MTA)處理,它們將登陸使用者的本地電子郵件收件箱文件,例如/var/mail/<username>. 但是,如果系統沒有安裝本地 MTA,則此過程可能會失敗並且 cron 作業錯誤消息可能會失去。

如果系統有一個正確配置的 MTA,它也可以在本地系統之外發送郵件,則此電子郵件傳遞可以重定向到您想要的任何電子郵件地址。


第二個重定向將標準輸出和標準錯誤輸出都附加到日誌文件中。如果 cron 作業以非零結果程式碼退出,則 cron 守護程序可能仍會嘗試向作業所有者發送本地電子郵件,只是將結果程式碼報告給作業所有者。

哪一個是首選/正確的?這取決於您的腳本正在做什麼,以及您是否想要更直接地通知腳本錯誤(通過電子郵件)。

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