Osx
防止 cronjob 寫入 /var/mail/$USER?
在 macOS 中,配置的 cronjobs
crontab
將命令輸出和/或錯誤消息(如果 cron 不成功)寫入/var/mail/$USER
文件。這可以防止嗎?我試過了:* * * * * /sbin/ping -c1 website.com ... 2>&1 >/dev/null
無論是成功還是未能到達域,
ping
輸出都保存到郵件文件…
cron 守護程序不會寫入
/var/mail/$USER
,它會在作業輸出任何內容或失敗時向使用者發送一封電子郵件,然後系統的郵件遞送服務會將其寫入該文件(使用者的郵件收件箱)。要關閉從 cron 守護程序發送電子郵件,請
MAILTO
在 crontab 文件中將該變數設置為空值:MAILTO="" # rest of file with job schedules goes here
從
crontab(5)
macOS 系統上的手冊中:除了
LOGNAME
,HOME
和SHELL
,cron(8)
將查看MAILTO
是否有任何理由由於在“this”crontab 中執行命令而發送郵件。如果MAILTO
已定義(且非空),則將郵件發送給如此命名的使用者。如果MAILTO
已定義但為空 (MAILTO=""
),則不會發送郵件。$$ … $$
如果您以這種方式關閉作業輸出和錯誤通知的郵件,您可能希望以其他方式記錄作業,例如,
* * * * * /sbin/ping -c1 website.com ... >>/tmp/ping.log 2>&1 0 0,12 * * * mv /tmp/ping.log /tmp/ping.log.old
這會將 的輸出添加
ping
到特定文件,並在午夜和中午將該文件移走(請注意,您的重定向/dev/null
是從後到前的)。
ping
如果失敗,您可能還想明確發送電子郵件:* * * * * /sbin/ping -c1 website.com ... >>/tmp/ping.log 2>&1 || mail -s "ping failed, do something" "$LOGUSER"
ping
每當返回非零退出狀態時,這將發送一封具有指定標題的空電子郵件。或者,您可以從一開始就直接獲得重定向,而無需打擾
MAILTO
日誌文件或發送電子郵件:* * * * * /sbin/ping -c1 website.com ... >/dev/null 2>&1
這將在
ping
失敗時向您發送一封電子郵件,但不會每分鐘向您發送命令的輸出。