如果在磁盘上有同一个应用程序的多个副本,并且只有一个正在运行(如我所见)ps
,我如何知道将其与其他应用程序区分开的绝对路径?
如果在磁盘上有同一个应用程序的多个副本,并且只有一个正在运行(如我所见)ps
,我如何知道将其与其他应用程序区分开的绝对路径?
Answers:
% sudo ls -l /proc/PID/exe
例如:
%ps -auxwe | grep 24466 根24466 0.0 0.0 1476 280?S 2009 0:00监督sshd %sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 root root 0 Feb 1 18:05 / proc / 24466 / exe-> /package/admin/daemontools-0.76/command/supervise
ls: cannot read symbolic link /proc/28783/exe: Permission denied
与运行ls
命令无关,与访问不属于您的进程的进程信息有关。在我的框中,/ proc中列出的所有进程中约有97%是根进程,其他进程分布在11个不同的用户上。
采用:
pwdx $pid
这将为您提供pid的当前工作目录,而不是其绝对路径。
通常,该which
命令会告诉您从shell调用哪个:
#> which vlc
/usr/bin/vlc
$pid
什么?” 编辑后的帖子仍然无法回答问题。which
只告诉“如果命令在路径上,那是什么?”
pwdx
返回我的进程的可执行程序的绝对路径,取决于redhat x64 6.3上的pid。
ps auxwwwe
资源:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
lsof是一个选项。您可以尝试以下操作:
lsof -p PROCESS_ID
这将列出该进程打开的所有文件,包括可执行文件的实际位置。然后可以添加更多的awk,cut,grep等,以查找所需的信息。
例如,我执行以下命令来确定“ java”过程的来源:
lsof -p 12345 | awk'{print $ NF}'| grep'java $'
ls
命令。