有没有办法找出进程启动的目录/磁盘位置?我知道 /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
答案3
如果您有一个可用的进程 ID,您可以使用:
readlink -f /proc/$pid/exe
(替换$pid
为进程的进程 ID)
如果该流程不属于您,则必须将其放在sudo
前面。
确定命令位置的示例firefox
:
输出
ps ax -o pid,cmd | grep firefox
:22831 grep --color=auto firefox 28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
是进程 ID,因此您必须运行:readlink -f /proc/28179/exe
输出:
/usr/bin/firefox
答案4
其他答案中的所有命令都很好,但您还可以做更多 - 查看某个进程在进入进程列表之前实际上是如何运行的。
在终端中运行:
top
在它运行时,按下键盘C
,您将获得已运行进程的命令。