ti-enxame.com

Como posso obter uma lista completa de processos no solaris, sem linhas truncadas?

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?

57
gabe.

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)"

62
Marcel G

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.

14

ps -e fornece a lista de todos os processos em execução. Também tem esse ps -elf.

2
ari

Dependendo de qual comando ps você usa, eu uso

ps -auxw
0
Wes

prstat fornecerá os processos atualmente em execução, juntamente com seus pids e a utilização da CPU.

0
user41052