Existe uma maneira de gerar uma lista de processos completa no solaris, sem linhas truncadas? Eu tentei o comando ps
, com os seguintes argumentos:
-f Gera uma lista completa. (Veja abaixo o significado de Das colunas em uma lista completa - Ing.)
-l Gera uma lista longa. (Ver abaixo.)
Portanto, esses dois parecem fazer o que eu quero, no entanto, mais abaixo na página do manual do ps, acho o seguinte:
args O comando com todos os seus argumentos como uma string . A implementação pode truncar Esse valor para a largura do campo; depende de implementação se qualquer truncamento adicional de ocorre. Não é especificado Se a cadeia de caracteres Representada é uma versão da lista de argumentos Conforme foi passada para o comando Quando foi iniciada ou se é uma versão de os argumentos , pois podem ter sido modificados pelo aplicativo. Os aplicativos não podem Depender de poderem modificar sua lista de argumentos E ter essa modificação - Refletida na saída do ps. A implementação do Solaris limita o string para 80 bytes; a string é a versão da lista de argumentos, pois foi passada para o comando quando foi iniciada.
O que basicamente diz que a saída será truncada e não há nada que eu possa fazer sobre isso. Então, eu estou vindo aqui. Certamente outras pessoas já se depararam com esse problema e talvez até tenham uma maneira de contorná-lo. Suponho que o ps não possa fazer isso e, portanto, preciso usar outras ferramentas para fazer isso. Isso é preciso?
você poderia tentar
pargs <PID>
isso fornece uma lista de todos os argumentos
ou então use outro ps. Se executado como root (ou qualquer usuário com privilégios suficientes para esse assunto)
/usr/ucb/ps auxww
lhe dará todos os argumentos. Sua parte do SUNWscpu, "Compatibilidade de Origem, (Usr)"
O kernel não é necessário para acompanhar os argumentos da linha de comando. Quando um programa é iniciado através da chamada execve
, o kernel deve copiar os argumentos na memória do processo (para que estejam disponíveis como argv
em um programa C, por exemplo). Depois disso, o kernel pode descartar a memória usada para armazenar os argumentos iniciais da linha de comando. O processo pode substituir sua cópia dos argumentos. Portanto, pode simplesmente não haver vestígios dos argumentos.
Algumas variantes do unix mantêm uma cópia dos argumentos de alguma forma. O Solaris expõe alguns dados em /proc/$pid
. No OpenSolaris 2009.06, o único rastreamento dos argumentos está em /proc/$pid/psinfo
, onde eles são concatenados com espaços no meio (para que você não possa distinguir entre foo "one" "two"
e foo "one two"
) e a sequência resultante é truncada para 80 bytes. Este campo em /proc/$pid/psinfo
é o que ps
imprime na coluna args
.
A propósito, o -f
e -l
opções controlam quais campos são impressos, e não se os campos estão truncados com alguma largura.
ps -e
fornece a lista de todos os processos em execução. Também tem esse ps -elf
.
Dependendo de qual comando ps
você usa, eu uso
ps -auxw
prstat
fornecerá os processos atualmente em execução, juntamente com seus pids e a utilização da CPU.