完全命令在solaris中使用ps不可见

时间:2018-05-09 16:32:16

标签: 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/connectivity_script.sh start tof as

如何获取使用ps运行的整个命令,因为我需要知道哪个属性文件已被使用?

  在这种情况下

abc / abc.prop

2 个答案:

答案 0 :(得分:4)

您可以在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获取完整的args。

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

答案 1 :(得分:2)

如Sasha所说,pargs是查看进程的整个参数向量的最佳方法(并且仅在旧版本的Solaris上),而pgrep是在以下位置查找进程的最佳方法第一名。由于您要搜索的不是可执行文件的名称,因此需要使用-f参数。因此:

pgrep -f connectivity_script.sh

pargs组合:

pargs $(pgrep -f connectivity_script.sh)

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