累積 sendmail プロセス

累積 sendmail プロセス

特定のプロセスの多くのインスタンスが表示される問題が発生しました。

/usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t

私はいくつかの内容を読みましたが、プロセスはcronジョブのstdout出力を送信し始めたようですが、何らかの理由で終了しません。

1日に1つのプロセスがあるので、毎日のクローン作業に関連していると思います。このプロセスの開始時間ps aux(毎日04:01)は、毎日のクローン操作の開始時間(毎日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を設定するだけですが、ソースからの問題を回避することをお勧めします。この問題の原因を知っている人はいますか?誰でもデバッグ手順を提供できますか?

答え1

問題はsendmailにまったくありません。 crond を使用して、pstree中断されずに終了せず、crond の親になるプロセスが多いことを確認できました。各プロセスを見てみると、そのうちの1つが次のことを行うことがわかりました。

cat /var/log/some_log_file

それをやってls /var/log/some_log_fileみると

/var/log/some_log_file|

some_log_file実際に名前付きパイプです!クローン操作はパイプからデータを読み取ろうとしますが、パイプに何も送信されないため終了しないようです。

修正で削除し、一般ファイルにしました。

答え2

私の場合、5つのクローンジョブがあります。デフォルトではメールを送信します。。したがって、cronジョブの最後にこの式を追加する必要があります。

>/dev/null 2>&1

たとえば、

*/5 * * * * /bin/sh /usr/share/shell/gnk-loader-rev2-20028-0027.sh > /dev/null 2>&1

より多くの情報を見ることができますここまたはここ

関連情報