web-dev-qa-db-ja.com

誰(どのプロセス)が別のプロセスを開始しているかを知る方法は?

したがって、exim4を何度殺しても、すぐに復活します。私はサービスを停止しましたが、何かがそれを生き返らせ、スパムに使用しています。

誰が犯人であるか、言い換えれば、誰がeximプロセスを開始しているのかをどのように見つけることができますか?

$ ps -ef | grep exim
root      3038     1  0 14:48 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5Mf-0000mt-L7
107       3042  3038  0 14:48 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5Mf-0000mt-L7
root      5083     1  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5N0-0001Jr-88
107       5233  5083  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5N0-0001Jr-88
root      7420     1  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5NR-0001vb-Km
107       7430  7420  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5NR-0001vb-Km
root      7454     1  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5NR-0001wA-Rl
107       7478  7454  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5NR-0001wA-Rl
root      7518     1  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5NS-0001xF-8C
107       7523  7518  0 14:49 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5NS-0001xF-8C
root      8863     1  0 14:50 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5Nm-0002Ir-93
107       8866  8863  0 14:50 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5Nm-0002Ir-93
root      8876     1  0 14:50 ?        00:00:00 /usr/sbin/exim4 -Mc 1YR5Nm-0002J5-Ee
5
David Coch

あなたの質問に対する直接の答えは(あなたの問題ではなく)次のようになります:ps -axjf。これは、「すべての」プロセスを表示するためのax(これらのパラメーターの詳細な説明については、 manページ を参照)、ジョブ形式の場合はj、ファンシーな場合はf ASCIIアートツリー。ppid(最初の列)は親プロセスIDを示します。

特定のプロセスのPPidをチェックするためのより直接的なアプローチは、次のように/proc/<processid>/statusのPPidをチェックすることです:grep PPid /proc/2774/status

それでは、問題に焦点を当てましょう。あなたが提供した情報から、あなたはメールdeliveryプロセスの1つを殺そうとしていると思います(ほとんどの構成では、eximは別のプロセスを生成しますユーザーrootで配信されるメッセージごとに)。これらのプロセスは、-Mcオプションを使用します。 Eximマニュアル から:

-MC <トランスポート> <ホスト名> <シーケンス番号> <メッセージID>

このオプションは、外部の発信者による使用を目的としたものではありません。これは、Eximによって内部的に使用され、Exim自体の別のインスタンスを呼び出して、標準入力として渡される既存のSMTP接続を使用して待機メッセージを配信します。これは最後のオプションである必要があり、呼び出し元はそれを使用するためにrootまたはEximユーザーである必要があります。

キューランナープロセスがあります(多くの場合、次のようなpsにあります:ユーザーmailの下の/usr/local/exim-in/bin/exim -bd -q 10m; rootではありません)。おそらくそれが親プロセスです。 eximには、多くの場合、複数のキューランナープロセスがあることに注意してください。何が起こっているかを(プロセスごとに)検査するには、前述のpsコマンドを使用できます。

メールキューにキューイングされているメッセージ(およびその理由)を確認することをお勧めします。

9
agtoever