為什麼procmail掛起?
我設置了一個愚蠢的 sendmail aliases.local 文件來將電子郵件傳遞給 procmail。這是在古代 Solaris 系統上執行的設置。現在我在 RHEL6 系統上執行它:
# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.2 (Santiago)
所以我有這個 /etc/mail/aliases.local 文件:
users-log: "|/usr/bin/procmail /auto/data/users/logs/.procmailrc"
/auto/data/users/logs/.procmailrc 如下所示:
# cat /auto/data/users/logs/.procmailrc MAILDIR=/auto/data/users/logs/ :0 responselog
據我了解,procmail 只會簡單地將電子郵件寫入文件/auto/data/users/logs/responselog。但是由於某種原因,我看到 procmail 程序的數量在增加。
# ps -ef | grep procmail | wc -l 19 # sleep 2 # ps -ef | grep procmail | wc -l 23
而且這個數字還在繼續增長。如果我做 strace -p 我得到這個輸出:
# ps -ef | grep procmail mail 2872 2861 0 17:05 ? 00:00:00 /etc/smrsh/procmail /auto/data/users/logs/.procmailrc ... # strace -p 2872 Process 2872 attached - interrupt to quit fcntl(6, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=1697659298, len=0}
這個過程就掛在那裡。這是怎麼回事?我是否錯誤配置了procmail?
感謝杰夫·沙勒。他的評論導致了問題的解決。
響應日誌的大小是否約為 1697659298 字節?可能是 procmail 正在嘗試附加到一個大文件並自行備份。– Jeff Schaller 20 小時前
假設有一個 cron 作業執行以輪換日誌文件並減小其大小。一旦我修復了那個 cronjob,問題就消失了。我還發現 Solaris 系統上的 procmail 是使用不同的文件鎖定選項建構的。在 Solaris
procmail -v
節目Locking strategies: dotlocking, fcntl(), lockf()
和 linuxprocmail -v
節目上Locking strategies: dotlocking, fcntl()
。不確定那是什麼意思。如果有人知道請發表評論。我找到了這個連結: http: //pm-doc.sourceforge.net/doc/#compiling_procmail_and_choosing_locking_scheme