如何确定进程二进制文件的路径?

如何确定进程二进制文件的路径?

有没有办法找出进程启动的目录/磁盘位置?我知道 /proc 挂载,但不知道在哪里可以找到它。

答案1

方法/proc是检查exe与 pid 对应的目录中的链接。

我们来看一个例子update-notifier

找到 pid,它是15421在此示例中:

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

查找符号链接:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

答案2

也许which这就是你要找的。例如,在我的系统上

which firefox 

返回

/usr/bin/firefox

也可以看看查找在 Solaris、Ubuntu、Suse 或 Redhat Linux 上运行的应用程序的路径

答案3

如果您有一个可用的进程 ID,您可以使用:

readlink -f /proc/$pid/exe

(替换$pid为进程的进程 ID)

如果该流程不属于您,则必须将其放在sudo前面。

确定命令位置的示例firefox

  1. 输出ps ax -o pid,cmd | grep firefox

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179是进程 ID,因此您必须运行:

    readlink -f /proc/28179/exe
    

    输出:

    /usr/bin/firefox
    

答案4

其他答案中的所有命令都很好,但您还可以做更多 - 查看某个进程在进入进程列表之前实际上是如何运行的。

在终端中运行:

top

在它运行时,按下键盘C,您将获得已运行进程的命令。

相关内容