我需要:所有当前正在运行的可执行文件及其完整路径的列表。
像这样:
1234 /完整/路径/到/可执行文件 4567 /完整/路径/到/可执行文件2
使用UNIX95= ps -exo pid,comm
我可以得到一个包含 PID 和类似命令的列表
11146 /opt/wbem/lbin/cimprovagt 0 4 8 根 IOTreeModule 8338 /opt/ssh/libexec/sftp 服务器 16684 postgres:sfmdb evweb [本地] 空闲 2518 /usr/sbin/stm/uut/bin/tools/monitor/WbemWrapperMonitor 2264 /usr/sbin/psb/bin/diagtxd 8340 -sh 7772 sshd:根@pts/0 8333 sshd:root@pts/1 7777 /opt/ssh/libexec/sftp 服务器
这是我所能得到的最接近的结果ps
,但还不够好:
- 有些行不包含完整路径(显然是因为它们不是使用完整路径启动的)。
- 可执行文件名称后的额外数据(我需要支持名称中带有空格的可执行文件,因此我不能只拆分字符串)
因此,我得出结论,这ps
不会让我走到最后。
是否有与 Linux 的 /proc 等效的程序,其中 /proc/{pid}/exe 指向可执行文件?如果没有,还有其他方法可以实现此目的吗?
提前致谢,
答案1
pfiles <pid>
可以列出可执行文件的完整路径。
例子:
摘录自UNIX95=1 ps -efo pid,comm
1666 cimprovagt
现在让我们运行pfiles 1666
1666: /opt/wbem/lbin/cimprovagt
0: S_ISCHR mode:666 dev:64,3 ino:124 uid:2 gid:2 rdev:3,2
flags = O_RDONLY|O_LARGEFILE
file = /dev/null
第一行显示可执行文件的完整路径。这对于我的目的来说已经足够了。