Centos
累積 sendmail 程序
我一直有一個問題,我會看到一個特定程序的許多實例:
/usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t
我做了一些閱讀,似乎程序正在啟動以發送 cron 作業的標準輸出輸出,但由於某種原因永遠不會終止。
每天有一個程序,所以它認為它與每日的 cron 作業有關。程序的開始時間
ps aux
(每天 04:01)似乎與每日 cron 作業的啟動時間(每天 04:02)一致。的內容/etc/cron.daily
是:0anacron 0logwatch cups logrotate makewhatis.cron mlocate.cron rpm tmpwatch
的內容
/etc/crontab
是:SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
到目前為止,當這些程序達到大量時,我已經手動終止了它們;如果我不這樣做,伺服器會耗盡資源並且在其上執行的服務會停止。最壞的情況是,我將簡單地設置另一個 cron 來殺死這些程序,但我寧願從源頭上停止問題。有誰知道這個問題的原因?誰能提供調試步驟?
問題根本不在於 sendmail。使用
pstree
,我能夠確定還有更多程序也掛起,沒有終止,並且由 crond 提供。我查看了這些流程中的每一個,發現其中一個流程正在按照以下方式進行操作
cat /var/log/some_log_file
當我這樣做時
ls /var/log/some_log_file
,我看到了
/var/log/some_log_file|
some_log_file
實際上是一個命名管道!似乎 cron 作業試圖從這個管道中讀取,但從未終止,因為沒有任何東西發送到管道。作為修復,我將其刪除並使其成為正常文件。