Unix 在solaris中使用ps时完整命令不可见

Unix 在solaris中使用ps时完整命令不可见,unix,solaris,ps,Unix,Solaris,Ps,由cronjob运行的命令 bin/bash /abc/bcd/def/ghi/connectivity/connectivity_script.sh start tof as abcde with abc/abc.prop 但是当我尝试使用 /usr/ucb/ps -auwwwxxxx | egrep "connectivity_script.sh" | cat 我只看到下面的命令,但没有看到整个命令 bin/bash /abc/bcd/def/ghi/connectivity/conn

由cronjob运行的命令

bin/bash /abc/bcd/def/ghi/connectivity/connectivity_script.sh start tof as abcde with abc/abc.prop
但是当我尝试使用

/usr/ucb/ps -auwwwxxxx | egrep "connectivity_script.sh"  | cat
我只看到下面的命令,但没有看到整个命令

bin/bash /abc/bcd/def/ghi/connectivity/connectivity_script.sh start tof as
如何获取使用ps运行的整个命令,因为我需要知道使用了哪个属性文件

在这种情况下,abc/abc.prop


您可以在Solaris中使用:

pargs -l PID
若您知道进程的PID,则在一行中获取进程的所有参数。 您还可以通过以下方式获得过程的特定参数:

pargs -a PID | grep 'argv\[8\]' | cut -d: -f 2 
或者,如果您只知道一个流程参数,则可以将ps与选项一起使用:

/usr/bin/ps -A -o pid,args | grep connectivity_script.sh | grep -v grep
在旧的Solaris版本中,/usr/bin/ps中的参数输出限制为80个字符,因此需要执行两个步骤:1)从ps获取PID,2)从pargs获取完整参数

PID=$(/usr/bin/ps -A -o pid,args | \
      grep connectivity_script.sh | \
      grep -v grep | \
      cut -d" " -f 1 )
pargs -l $PID

正如Sasha所说,
pargs
是查看进程的整个参数向量的最佳方法(并且是在旧版本的Solaris上唯一的方法),但是
pgrep
是首先查找进程的最佳方法。因为您要搜索的不是可执行文件的名称,所以需要
-f
参数。因此:

pgrep -f connectivity_script.sh
pargs
组合:

pargs $(pgrep -f connectivity_script.sh)

请注意,除非您拥有该进程或具有提升的权限,否则您将无法看到进程的整个参数向量,因此pgrep调用可能无法找到您要查找的内容,pargs肯定不会显示它。即使在Andrew提到的较新版本的Solaris中也存在这种限制。

添加
-o args
,Solaris ps的参数与Linux ps的参数不同,请阅读手册页。哪一版本的Solaris?Solaris 11.3中有重大更改。请参见第一个命令实际显示整个命令。但是第三个不起作用,我无论如何也不需要获取pid,除非我将grep itor保存在一个新文件中运行的每个命令的pid,并在需要时检查它。对于较旧的Solaris,请尝试以下操作:pargs-l$(/usr/bin/ps-a-o pid,args | grep connectivity_script.sh | grep-v grep | cut d”“-f 1)。这将从80个字符的参数grep中捕获PID,然后查看有关此PID的完整信息。“sasha/usr/bin/ps从未给出完整的输出。此外,我使用/usr/ucb/ps-auwwxxxx | egrep”connectivity.sh start fot as fot-”而不是使用/usr/ucb/ps-aewwwxxxx | egrep connectivity.sh start fot as fot-“,-e在字符串长时起作用,但在字符串短时不显示任何内容