请指教,如何验证执行该程序的程序?
例如
以下命令(ps -ef)将在此进程运行时查看进程sendmail
ps –ef | grep sendmail
root 9558 9544 019:05? 00:00:00/usr/sbin/sendmail-FCronDaemon-i-odi-oem-oi-t
我想要找到的是执行二进制文件的脚本 / usr / sbin / sendmail
所以我的问题 - 我需要在语法“ps -ef”中添加哪些标志才能从ps -ef获取完整的详细信息,包括运行该进程的程序
有可能吗?
如果 /etc/rc3.d/sendmail 运行二进制文件 / usr / sbin / sendmail
然后我希望从命令ps -ef ......中看到 /etc/rc3.d/sendmail PATH。
答案 0 :(得分:2)
您需要的是树输出并了解父进程。
示例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
在这里你可以看到有一个zsh
(我的shell)正在运行命令pstree
的进程。 zsh
本身由流程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
的父级是shell进程10041
。您始终可以通过父进行父进程跟踪将进程追溯到init(进程ID 1)。
在您的情况下,如果您想查找/etc/rc3.d/sendmail
,则可能需要从/usr/sbin/sendmail
开始处理流程,直到您拥有/etc/rc3.d
下的完整路径。