如何在unix/linux系统上将命令行args传递给正在运行的进程?

Hem*_*ant 188 unix linux aix hp-ux sunos

在SunOS上,有一个pargs命令可以打印传递给正在运行的进程的命令行参数.

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

mar*_*s_b 290

有几种选择:

ps -fp <pid>
cat /proc/<pid>/cmdline | sed -e "s/\x00/ /g"; echo
Run Code Online (Sandbox Code Playgroud)

/proc/<pid>Linux上有更多信息,请看一下.

在其他Unix上,事情可能会有所不同.该ps命令将在任何地方工作,这些/proc东西是特定于操作系统 例如AIX上没有cmdline/proc.

  • 在Linux上,你可能需要-ww(即`ps -ww -fp <pid>`)来指定宽输出,因为如果有几个命令,它们可能会被切断. (47认同)
  • ``cat/proc/<pid>/cmdline``也适用于Cygwin,其中cmd行参数未在``ps``中显示任何选项. (3认同)
  • 在Linux上,如果你只需要获取`args`,那么命令是`ps -o args -p <pid>`它只会打印`args`或者使用-o`cmd`如果你只需要看看`cmd`.尝试读取`/ proc/<pid>/cmdline`并不总是适用于非特权用户.`ps`实用程序将起作用. (3认同)
  • `-ww` 选项允许访问完整的命令行参数(与内核存储的一样多)。另请参见:[solaris 和 bsd 如何获取进程的未截断的命令行参数](http://praveen.kumar.in/2010/02/24/getting-untruncated-command-line-options-passed-to-a- solaris-process/) 和 [ps 选项](http://linux.about.com/od/commands/l/blcmdl1_ps.htm) (2认同)
  • 提示:`/ proc/<pid>/cmdline`的长度是有限的(硬编码为PAGE_SIZE内核参数的值),因此更长的命令行仍然显示为截断!有关详细信息,请参阅http://stackoverflow.com/questions/199130/how-do-i-increase-the-proc-pid-cmdline-4096-byte-limit.您可以使用`getconf PAGE_SIZE`查询内核设置,通常为4096. (2认同)

Mic*_*ing 61

这样就可以了:

xargs -0 < /proc/<pid>/cmdline
Run Code Online (Sandbox Code Playgroud)

如果没有xargs,参数之间就不会有空格,因为它们已经转换为NUL.

  • 这可以缩短为`xargs -0 </ proc/<pid>/cmdline`. (3认同)

LOG*_*GAN 19

对于Linux和Unix系统,您可以使用ps -ef | grep process_name获取完整的命令行,

在SunOS系统上,如果要获得完整的命令行,可以使用ps -ef | grep process_name.确保在SunOSto中获得成为超级用户所需的完整命令行.

ps -ef | grep process_name.这将给出传递给进程的参数的详细列表.它将在输出中给出参数数组,如argv [o]:first argumen argv [1]:second .. so ..

我没有找到任何类似的命令,但我会给出以下命令来获得ps -ef | grep process_nameLinux环境中的那样的输出.


lot*_*har 14

Linux上

cat /proc/<pid>/cmdline
Run Code Online (Sandbox Code Playgroud)

得到你是进程的命令行(包括args),但所有的空格都改为NUL字符.

  • xargs -0 echo </ proc/<pid>/cmdline.您也可以使用/ proc/<pid>/environ执行此操作,但您可能需要为此添加-n 1. (4认同)
  • 没有删除空格,它被NUL取代. (3认同)

Sop*_*rez 13

你可以用pgrep-f(完整命令行)和-l(长说明):

pgrep -l -f PatternOfProcess
Run Code Online (Sandbox Code Playgroud)

这个方法与任何其他响应都有一个重要区别:它适用于CygWin,因此您可以使用它来获取在Windows下运行的任何进程的完整命令行(如果您需要有关任何提升/管理进程的数据,则执行提升) .例如,在Windows上执行此操作的任何其他方法都更加尴尬.
此外:在我的测试中,pgrep方式是唯一能够获得在CygWin的python中运行脚本的完整路径的系统.