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


30

有没有办法找出一个进程开始的目录/磁盘位置?我知道/ proc挂载,但不是真正在其中查找。


1
您是指二进制文件的位置,还是进程启动的目录?
Lekensteyn 2011年

很抱歉的不确定性,我指的是二进制
超级客机

Answers:


37

/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'

哦,是的,我快到了。传奇,谢谢。
SuperJumbo 2011年


6

如果您有可用的进程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
    

2
您可以使用进行一些有趣的操作/proc/$pid/exe,如果意外删除了二进制文件,则可以使用以下方法进行恢复:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn 2011年

1

Ctrl+ Alt+ T转到终端并输入:

ls -al /proc/{pid}/fd  

然后检查输出

这将列出您的过程关联的所有文件...


您能请我回顾一下我的编辑,同时也请查看编辑帮助,以提高将来答案的可读性... ;-)
Fabby 18'Jul

0

其他答案中的所有命令都不错,但是您可以做更多的工作-在某个进程到达进程列表之前,先看看它们是如何实际运行的。

在终端中运行:

top

并且在运行时,按键盘C,您将获得运行过程的命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.