在 solaris 上如何知道正在运行的进程的绝对路径?

在 solaris 上如何知道正在运行的进程的绝对路径?

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

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

但请问是否可以在 Solaris 上查看正在运行的进程的路径

如果是,那么 Solaris 的 ps 语法是什么?

答案1

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

密码<pid_number>

例子:

pwdx $$
25711:  /export/home/pippo

答案2

如何知道正在运行的进程的绝对路径?

如果“绝对路径”是指正在运行的二进制文件的完整路径,那么这在我安装的 Solaris 11 副本上有效:

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

将其替换PID为您感兴趣的进程的进程 ID。

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

不幸的是,您需要流程图的读取权限才能获取该信息。如果没有该权限,我不知道如何获取您正在寻找的信息。

编辑: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,因为我的 Solaris 11 安装的权限/proc/[PID]/path全部为 500 - 只有所有者和 root 对该目录具有读取和执行权限。

答案3

/usr/ucb/ps auxwwww | grep 6851 在 SunOS servername01 5.10 Generic_147440-25 sun4u sparc SUNW、Sun-Fire-V490 上对我有用

相关内容