Linux
有沒有辦法從 Linux 日誌文件中排除特定條目?
具體來說,我試圖在 Ubuntu Server(hardy LTS)下保持一個乾淨整潔的 cron.log。除了預先安裝的 4 或 5 個 cron 作業之外,我還添加了 4 個自己的作業(使用 cron.d 方法)。現在,自動安裝的作業之一是每小時執行的 PHP 會話到期腳本。
當然,它需要執行,但坦率地說,我不在乎它何時執行。它每小時執行一次,並輸出一個類似於下面的條目。
Oct 18 02:17:01 cobalt /USR/SBIN/CRON[18160]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Oct 18 02:39:01 cobalt /USR/SBIN/CRON[18233]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
由於它每小時執行一次並產生一個相對較長的日誌條目,它占我的 cron.log 的 90%。如果我翻閱日誌文件以確保我的每日備份腳本等得到執行,它們會被所有這些條目吞沒。
我有什麼辦法可以排除這個過程被記錄?
我意識到我可以使用 grep 或日誌閱讀器程序進行搜尋,但這並不是我真正想要的。我希望能夠“cat cron.log | less”並在沒有來自我不關心的程序的日誌垃圾郵件的情況下進行瀏覽(而且我也意識到這個過程在大多數 Web 伺服器上都很重要,但這是’主要不是網路伺服器,甚至不允許來自公司外部的連接)。
任何最近的 syslog-daemon(如 syslog-ng 或 rsyslog)都支持過濾功能。只需編輯您的
rsyslog.conf
或syslog-ng-conf
忽略/USR/SBIN/CRON
包含字元串的程序名稱的條目CMD
。更好的是:您只需將這些消息記錄到另一個文件中(例如
cron-detail.log
)。文件連結:
…或者您可以只是懶惰並通過管道傳輸日誌
grep -v FILTERSTRING
;)