答案1
您可以使用lsof
(几乎适用于任何 Unix 变体,但通常不是默认安装的一部分)列出进程正在使用的所有文件。 “使用”包括打开的文件描述符以及密切相关的概念,例如进程正在运行哪个可执行文件。可执行文件位于txt
FD 列中,对于历史原因不明。
$ lsof -p1234 | grep txt
a.out 1234 user15964 txt REG 253,0 34567 /path/to/a.out
(合成输出)
在 Solaris 和 Linux 上,有一种更直接的方法:进程文件系统提供有关每个进程的信息,包括它正在运行的可执行文件。 (至少在 Linux 上,这是lsof
获取信息的地方。)
$ ls -l /proc/1234/exe
lrwxrwxrwx 1 root root 0 Feb 30 34:56 /proc/1234/exe -> /path/to/a.out
如果您正在寻找运行给定可执行文件的进程,请运行定影器。
$ fuser /path/to/a.out
/path/to/a.out: 1234e 1239e
答案2
没有一般性的答案。在现代 Linux 下,您可以查看数字进程 ID在/proc/$PID
哪里。$PID
您可以从top
输出中获取它。
ls -l /proc/$PID/exe
将向您显示exe
符号链接的位置。这是可执行文件的完整路径a.out
。