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

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


当前回答

Linux中用空格打印/proc/PID/cmdline的另一个变体是:

cat -v /proc/PID/cmdline | sed 's/\^@/\ /g' && echo

这样,cat将NULL字符打印为^@,然后使用sed将它们替换为空格;Echo输出换行符。

其他回答

在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

你可以简单地使用:

ps -o args= -f -p ProcessPid

Linux中用空格打印/proc/PID/cmdline的另一个变体是:

cat -v /proc/PID/cmdline | sed 's/\^@/\ /g' && echo

这样,cat将NULL字符打印为^@,然后使用sed将它们替换为空格;Echo输出换行符。

ps -eo pid,args打印pid和完整的命令行。

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

两个输出在一个命令:

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

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