问题描述
有没有办法找出进程启动的目录/磁盘位置?我知道 /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
位置的示例:
-
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