获取(父)进程在Linux shell中执行命令

请指教,如何validation执行过程的程序?

例如

以下命令(ps -ef)将查看进程sendmail以防此进程正在运行

ps –ef | grep sendmail root 9558 9544 019:05? 00:00:00/usr/sbin/sendmail-FCronDaemon-i-odi-oem-oi-t 

我想find的是执行二进制文件/ usr / sbin / sendmail的脚本

所以我的问题 – 哪些标志,我需要添加到语法“ps -ef”,以获得从ps -ef的全部细节,包括哪个程序运行的过程

可能吗 ?

  • 示例和注释

如果/etc/rc3.d/sendmail运行二进制文件/ usr / sbin / sendmail

然后我希望看到命令ps -ef ……中的/etc/rc3.d/sendmail PATH。

你需要什么是树输出,并知道父进程。

示例pstree -a

 [~]# pstree -a init ├─atd ├─atop -a -w /var/log/atop.log 600 ├─cron ├─dbus-daemon --system --fork --activation=upstart ├─getty -8 38400 tty4 │ ├─sshd │ └─sshd │ └─zsh │ └─pstree -a ├─udevd --daemon │ ├─udevd --daemon │ └─udevd --daemon ├─upstart-socket- --daemon ├─upstart-udev-br --daemon 

在这里你可以看到有一个运行命令pstreezsh (我的shell) pstreezsh本身是由进程sshd启动的。

这是ps -AF的相同输出:

 root 10006 649 0 22329 3944 0 12:48 ? 00:00:00 sshd: root@pts/2 root 10041 10006 0 10355 5276 0 12:48 pts/2 00:00:00 -zsh root 16465 10041 0 4538 1220 0 12:52 pts/2 00:00:00 ps -AF 

第二列是进程ID,第三列是父进程ID 。 您会看到ps -AF的父ps -AF是shell进程10041 。 您可以始终通过父进程来追溯进程到init(进程ID 1)。

在你的情况下,如果你想找到/etc/rc3.d/sendmail你可能需要从/usr/sbin/sendmail开始,直到你在/etc/rc3.d下有完整路径。