如何找出谁(哪个进程)正在启动另一个进程?

如何找出谁(哪个进程)正在启动另一个进程?

因此,无论我多少次关闭 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

答案1

对你的问题(但不是你的问题)的直接回答是:ps -axjf。这是ax要查看“所有”进程(请参阅手册页请参阅 了解这些参数的更详细说明)、j作业格式和f精美的 ASCII 艺术树。ppid(第一列)显示父进程 ID。

检查特定进程的 PPid 更直接的方法是检查 中的 PPid /proc/<processid>/status,如下所示:grep PPid /proc/2774/status

现在让我们关注你的问题。根据你提供的信息,我猜你正在试图杀死其中一个邮件送货进程(在大多数配置中,exim 会为用户下要传递的每条消息生成一个单独的进程root)。这些进程使用选项-Mc。从Exim 手册

-MC <传输> <主机名> <序列号> <消息 ID>

此选项不适用于外部调用者。它由 Exim 内部使用,用于调用自身的另一个实例,使用现有的 SMTP 连接传递等待消息,该消息作为标准输入传递。这必须是最后一个选项,并且调用者必须是 root 或 Exim 用户才能使用它。

有一个队列运行器进程(通常在 ps 中找到,例如:/usr/local/exim-in/bin/exim -bd -q 10m在 user 下mail;不是root)。可能这是父进程。请注意,exim 通常有多个队列运行器进程。要检查正在发生的事情 - 进程方面 - 您可以使用ps前面提到的命令。

您可能想要检查邮件队列中排队的消息有哪些(以及原因)。

相关内容