在 Aix 中,是否有任何命令可以提供 /proc/ 下进程的可执行文件的路径或链接

在 Aix 中,是否有任何命令可以提供 /proc/ 下进程的可执行文件的路径或链接

我尝试过ls -l /proc/17301504没有 exe 为我提供命令的完整路径。有没有办法像在 Linux 中一样在 Aix 5 及更高版本中获取命令的完整路径?

有一个.out,/proc/17301504/object其中与命令具有相同的校验和,但没有给出完整路径。

答案1

文件/proc系统本质上不可在操作系统之间移植。有些 Unices 根本不存在。

AIX 上的文件系统/proc记录如下:https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.files/proc.htm

关于子目录a.out中的文件object,它说:

[...] 该名称a.out还作为与正在运行的进程的文本关联的可执行文件的同义词出现在目录中。

object目录使控制进程可以访问目标文件和任何共享库(以及符号表),而无需进程首先获取这些文件的特定路径名。

这意味着访问a.out该结构中的文件或多或少与您想要执行的操作相反。它允许用户程序在不知道进程的完整路径的情况下访问进程的可执行文件。

AIX 上还有/proc包含可执行文件的基本名称的结构,但同样,这不是您感兴趣的内容。

由于进程可以设置自己的第零个命令行参数(在 中显示的进程名称ps),因此使用ps也不是找到正在运行的可执行文件的绝对路径的可靠解决方案,即使它是使用完整路径执行的。

你什么可以do 是通过其 inode 来查找可执行文件。

当前接受的问题答案中描述了如何执行此操作的示例“如何在 AIX 5 或更高版本上通过 PID 识别可执行路径”。

最好问问自己为什么需要通过查询来获取此信息跑步过程,因为通过研究脚本或程序通常可以清楚地了解它正在调用哪些外部实用程序。

答案2

istat使用以下命令获取索引节点和主/次编号/proc/<pid>/object/a.out

$ istat a.out
Inode 4694 on device 10/5       File
Protection: r-xr-xr--   Set UID 
Owner: 0(root)          Group: 0(system)
Link count:   1         Length 82411 bytes

Last updated:   Fri May  4 13:58:53 PDT 2018
Last modified:  Wed Nov 29 10:40:56 PST 2017
Last accessed:  Wed Sep  5 14:51:07 PDT 2018

从主/次编号获取文件系统名称

$ ls -l /dev/* | grep 10, | grep ' 5 '
brw-rw----    1 root     system       10,  5 Jul 03 2017  /dev/hd2
crw-rw----    1 root     system       10,  5 Jul 03 2017  /dev/rhd2

$ df /dev/hd2
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd2        10944512   2220824   80%    41861     4% /usr

从inode中获取文件名

$ find /usr -inum 4694 -exec /bin/ls -l {} \;
-r-sr-xr--    1 root     system        82411 Nov 29 2017  /usr/sbin/inetd

相关内容