当前位置: 首页>>技术教程>>正文


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

问题描述

有没有办法找出进程启动的目录/磁盘位置?我知道 /proc 挂载,但并不真正了解它的内部位置。

最佳思路

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

让我们以 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'

次佳思路

也许 which 是你正在寻找的。例如,在我的系统上

which firefox 

返回

/usr/bin/firefox

另请参见 Find Path of Application Running on Solaris, Ubuntu, Suse or Redhat Linux

第三种思路

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

readlink -f /proc/$pid/exe

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

如果该进程不属于您,则必须将 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
    

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12439.html,未经允许,请勿转载。