Comando completo não visível com o ps no solaris
o comando que foi comandado por cronjob
bin/bash /abc/bcd/def/ghi/connectivity/connectivity_script.sh start tof as abcde with abc/abc.prop
mas enquanto tento ver este processo usando
/usr/ucb/ps -auwwwxxxx | egrep "connectivity_script.sh" | cat
Eu só vejo o abaixo , mas não todo o comando.
bin/bash /abc/bcd/def/ghi/connectivity/connectivity_script.sh start tof as
Como obter todo o comando que foi executado usando ps como eu preciso saber que Arquivo de propriedade foi usado?
Abc / abc.prop neste caso
2 answers
Pode utilizar em Solaris:
pargs -l PID
Para obter todos os argumentos do processo em uma linha se você conhece seu PID. Também você pode obter o argumento particular do processo de tal forma:
pargs -a PID | grep 'argv\[8\]' | cut -d: -f 2
Ou pode usar ps com opções se souber apenas um dos argumentos do processo:
/usr/bin/ps -A -o pid,args | grep connectivity_script.sh | grep -v grep
Nas versões Solaris mais antigas ouput de argumentos em /usr/bin / ps é limitado com 80 caracteres, então você precisa de dois passos para fazer: 1) Obter PID de ps, 2) Obter args completos de pargs.
PID=$(/usr/bin/ps -A -o pid,args | \
grep connectivity_script.sh | \
grep -v grep | \
cut -d" " -f 1 )
pargs -l $PID
Como diz Sasha, pargs
é a melhor (e única, em versões mais antigas de Solaris) maneira de olhar para todo o vector de argumento de um processo, mas pgrep
é a melhor maneira de encontrar o processo em primeiro lugar. Porque o que procuras não é o nome do executável, vais precisar do argumento. Assim:
pgrep -f connectivity_script.sh
Em combinação com pargs
:
pargs $(pgrep -f connectivity_script.sh)
Note que a menos que seja dono do processo ou tenha privilégios elevados, não será capaz de ver todo o vector de argumento de um processe, e assim a invocação do pgrep pode falhar em encontrar o que você está procurando, e pargs definitivamente não vai mostrá-lo. Essa limitação está presente mesmo nas versões mais recentes de Solaris Andrew mencionado.