如何將 cronjob 完全靜音到 /dev/null/?
在我的 Ubuntu-Desktop 和我的 debian-server 上,我有一個需要每分鐘執行一次的腳本(一個呼叫我的空間線上 browsergame的 minute-tic 的腳本)。
問題是在 debian 派生 cron
/var/log/syslog
每次執行時都會記錄。我最終看到重複了它一遍又一遍地執行的消息/var/log/syslog
:Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
我知道,為了抑製程序的輸出,我可以將其重定向到
/dev/null
,例如隱藏程序中的所有錯誤和警告消息,我可以像這樣在 crontab 中創建一行* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
但我想執行一個 cronjob 並確保所有生成的輸出或錯誤都通過管道傳輸到 NULL,因此它不會在 syslog 中生成任何消息,也不會生成任何電子郵件
編輯:
有一個解決方案可以將 cron-logs 重定向到一個單獨的日誌中,就像這裡建議的那樣,通過更改
/etc/syslog.conf
但缺點是,所有 cronjobs 的所有輸出都被重定向。
我可以以某種方式僅將單個 cronjob 重定向到單獨的日誌文件嗎?最好在
cron.hourly
文件本身內部進行配置。
使這一行:
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
這將擷取 STDOUT (1) 和 STDERR (2) 並將它們發送到
/dev/null
.郵件
您還可以通過設置然後重置
MAILTO=""
將禁用任何電子郵件的發送來禁用電子郵件。例子
MAILTO="" * * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1 MAILTO="admin@somedom.com" * * * * * root /usr/local/sbin/myothercommand.sh
附加資訊
通常,您會收到以下類型的消息
/var/log/syslog
:Nov 11 08:17:01 manny CRON[28381]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
這些只是通過 cron 通知執行了一個 cronjobs 目錄。此消息與這些作業沒有直接關係,而是
crond
直接來自守護程序。對於這些,您實際上無能為力,我鼓勵您不要禁用這些,因為它們可能是您crond
通過日誌了解情況的唯一視窗。如果它們對您來說很煩人,您始終可以
/var/log/syslog
通過./etc/syslog.conf``syslog