Cron

如果作業花費 > 5 分鐘,則 sSMTP 不會發送 Cron 電子郵件

  • March 1, 2019

我們有兩台伺服器,其中一台執行 Ubuntu,另一台執行 Amazon Linux 2。兩者都為不同的客戶端執行一系列 cron 作業。

Ubuntu 伺服器會發送一封電子郵件(到一個​​群組電子郵件地址),其中包含每個 cron 作業的輸出。沒有輸出重定向:對於每個條目,只有一個要執行的命令:

0 2 * * * /apps/ourapp/sync_data -c variable1 -s all -i CLIENT1

…以不同的時間和不同的值重複-i。計劃的開始時間始終採用 hh :00hh :15或 hh :45的形式。

它的工作令人滿意:人們收到電子郵件。

Amazon Linux 機器並非如此。它的郵件日誌有這樣的條目(略有編輯):

Feb 28 07:05:04 ip-XXXX sSMTP[32212]: Connection lost in middle of processing
Feb 28 08:05:04 ip-XXXX sSMTP[32382]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 08:05:04 ip-XXXX sSMTP[32382]: Timeout on stdin while reading body
Feb 28 21:50:04 ip-XXXX sSMTP[2261]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 21:50:04 ip-XXXX sSMTP[2261]: Timeout on stdin while reading body
Feb 28 22:05:04 ip-XXXX sSMTP[2505]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 22:05:04 ip-XXXX sSMTP[2505]: Timeout on stdin while reading body
Feb 28 22:20:05 ip-XXXX sSMTP[2845]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 22:20:05 ip-XXXX sSMTP[2845]: Timeout on stdin while reading body

您會注意到時間戳分鐘組件在小時、15 分鐘或 45 分鐘標記後 5 分鐘。這些對應於發送電子郵件的 cron 作業。

dead.letter始終為空,如果在作業結束之前沒有發送日誌(正如我推斷的那樣),這是有道理的。

我讀到的內容sSMTP表明您無法stdin使用配置選項覆蓋超時(儘管該資訊可能已過時)。

那麼我能做什麼呢?這是因為我們使用sSMTP而不是其他一些郵件機制嗎?

如果您堅持使用 sSMTP,您將無能為力。正如您所猜測的,這是不可配置的。5 分鐘超時是硬連線到程式碼中的。如果您的工作需要超過 5 分鐘,那麼您只需要一個不同的郵件送出系統。

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