在SunOS上,有一个pargs命令用于打印传递给正在运行的进程的命令行参数。

在其他Unix环境中是否有类似的命令?


当前回答

你可以简单地使用:

ps -o args= -f -p ProcessPid

其他回答

除了以上所有转换文本的方法外,如果你只是使用'strings',默认情况下它会使输出在单独的行上。附加的好处是,它也可以防止任何字符,可能扰乱你的终端出现。

两个输出在一个命令:

字符串/proc//cmdline /proc// about

真正的问题是……是否有一种方法可以查看Linux中被修改的进程的真实命令行,以便cmdline包含修改后的文本,而不是实际运行的命令。

在Linux上

cat /proc/<pid>/cmdline

输出进程的命令行<pid>(命令包括参数)每条记录以NUL字符结束。

Bash Shell示例:

$ mapfile -d '' args < /proc/$$/cmdline
$ echo "#${#args[@]}:" "${args[@]}"
#1: /bin/bash
$ echo $BASH_VERSION
5.0.17(1)-release

在Solaris

     ps -eo pid,comm

类似的可以用于Unix类系统。

你可以简单地使用:

ps -o args= -f -p ProcessPid

这样就可以了:

xargs -0 < /proc/<pid>/cmdline

如果没有xargs,参数之间将没有空格,因为它们已被转换为NULs。