Cron

如何將 cronjob 完全靜音到 /dev/null/?

  • July 22, 2018

在我的 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

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