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

Dav*_*och 8 linux spam-prevention pid exim

因此,无论我杀死 exim4 多少次,它都会立即恢复生机。我已经停止了这项服务,但一切都在让它恢复生机并将其用于垃圾邮件。

我如何找到谁是罪魁祸首,换句话说,谁开始了进出口流程?

$ 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
Run Code Online (Sandbox Code Playgroud)

agt*_*ver 11

对您的问题(但不是您的问题)的直接回答是:ps -axjf. 这ax看“全”过程(参见手册页对这些参数的更详细的解释),j就业形式和f对花哨ASCII艺术的树。ppid(第一列)显示父进程 ID。

更直接的方式来检查的特定进程的PPID将是检查的PPID中/proc/<processid>/status,像这样:grep PPid /proc/2774/status

现在让我们专注于您的问题。根据您提供的信息,我的猜测是您正试图终止其中一个邮件传递进程(在大多数配置中,exim 为要在 user 下传递的每条消息生成一个单独的进程root)。这些进程使用该-Mc选项。从进出口手册

-MC <transport> <hostname> <sequence number> <message id>

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

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

您可能想要检查邮件队列中正在排队的邮件(以及原因)。