Centos

累積 sendmail 程序

  • July 26, 2017

我一直有一個問題,我會看到一個特定程序的許多實例:

/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 作業試圖從這個管道中讀取,但從未終止,因為沒有任何東西發送到管道。

作為修復,我將其刪除並使其成為正常文件。

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