由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
答案 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的较新版本中也存在该限制。