是否可以找到正在运行的程序的路径?

Wol*_*olf 18 process

我有一个xmms2d进程正在运行,但是有两个可能的可执行文件(在不同的目录中,都在可执行路径中)可能会产生它。我怀疑其中一个已损坏,因为有时该程序有效,有时无效。现在运行的进程有效,所以我想删除(或重命名)另一个。

ps ax|grep "xmms"返回8505 ? SLl 2:38 xmms2d -v没有路径信息。给定 PID,我能找出它是从/usr/bin/xmms2d还是运行的/usr/local/bin/xmms2d吗?

谢谢!

Mik*_*kel 23

尝试这个:

ls -l /proc/8505/exe
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想解析 的输出ls,请执行以下操作:

readlink /proc/8505/exe
Run Code Online (Sandbox Code Playgroud)

或者

realpath /proc/8505/exe
Run Code Online (Sandbox Code Playgroud)


jll*_*gre 6

如果您运行的是 Solaris,则该方式与建议的 Linux 方式略有不同:

$ for i in $(pgrep bash)
do
  printf "%6d %s\n" $i $(readlink /proc/$i/path/a.out)
done
   577 /usr/bin/bash
 11247 /usr/bin/bash
 13921 /usr/bin/bash
 13992 /tmp/bash
Run Code Online (Sandbox Code Playgroud)

如果您想知道正在运行的进程的当前工作目录,您可以使用:

pwdx $(pgrep xmms)
Run Code Online (Sandbox Code Playgroud)

例如:

$ pwdx $(pgrep ksh)
2904: /home/jlliagre
2906: /home/jlliagre
3844: /tmp
Run Code Online (Sandbox Code Playgroud)