我怎样才能知道正在运行的进程的绝对path? 在solaris上

这是在Linux上查看进程path的命令

ps -auxwe | grep 24466 ( 24466 is only example ) 

但请指教是否可以查看在Solaris上运行进程的path

如果是的什么Solaris的PS语法?

你可以在solaris和linux中使用pwdx。

pwdx <pid_number>

例:

 pwdx $$ 25711: /export/home/pippo 

/ usr / ucb / ps auxwwww | grep 6851在SunOS servername01上为我工作5.10 Generic_147440-25 sun4u sparc SUNW,Sun-Fire-V490

我怎样才能知道正在运行的进程的绝对path?

如果通过“绝对path”指的是正在运行的二进制文件的完整path,则可以在我已安装的Solaris 11副本上运行:

 pmap PID | grep -v ':' | head 1 | awk '{ print $4 }' 

PIDreplace为您感兴趣的进程的进程ID。

pmap发出进程的地址映射,包括映射源文件的完整path。 这包括实际的二进制,这是输出的第一个映射线。 输出的第一行包含进程标识和进程参数。 请注意,进程参数不足以完全识别正在运行的可执行文件的完整path。 实际地址空间映射的前几行是来自实际执行二进制文件的映射,列出了二进制文件的完整path。

不幸的是,您需要读取进程映射来获取这些信息。 我不知道有什么方法可以在没有访问权限的情况下获得所需内容。

编辑:Solaris 11上还有/proc/[PID]/path/a.out ,它是实际二进制文件的软链接:

在bash中:

 bash-4.1$ readlink /proc/$$/path/a.out /usr/bin/bash 

请注意,/ /proc/$$/path/a.out/proc/self/path/a.out更好:

 bash-4.1$ readlink /proc/self/path/a.out /usr/bin/readlink 

不幸的是,如果您无法通过pmap访问/proc/[PID]/path/a.out ,那么您可能无法访问/proc/[PID]/path/a.out ,作为/proc/[PID]/path的权限我的Solaris 11安装都是500 – 只有拥有者和根目录对目录具有读取和执行权限。