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

52

Existe uma maneira de gerar uma lista completa de processos no solaris, sem linhas truncadas? Eu tentei o comando ps , com os seguintes argumentos:

  -f                  Generates a full listing. (See below for
                      significance  of columns in a full list-
                      ing.)
  -l                  Generates a long listing. (See below.)

Então, esses dois parecem fazer o que eu quero, no entanto, mais abaixo na página man ps, eu acho isso:

 
 args                    The command with all its arguments as  a
                         string.  The implementation may truncate
                         this value to the  field  width;  it  is
                         implementation-dependent   whether   any
                         further   truncation   occurs.   It   is
                         unspecified     whether    the    string
                         represented is a version of the argument
                         list  as  it  was  passed to the command
                         when it started, or is a version of  the
                         arguments as they may have been modified
                         by the application. Applications  cannot
                         depend  on  being  able  to modify their
                         argument list and having that  modifica-
                         tion  be  reflected in the output of ps.
                         The Solaris  implementation  limits  the
                         string  to  80  bytes; the string is the
                         version of the argument list as  it  was
                         passed to the command when it started.

O que basicamente diz que a saída será truncada e não há nada que eu possa fazer sobre isso. Então estou chegando aqui. Certamente, outras pessoas se depararam com esse problema e talvez até tenham uma maneira de contorná-lo. Eu acho que ps não pode fazer isso e então eu preciso usar outras ferramentas para fazer isso. Isso é exato?

    
por gabe. 11.11.2010 / 15:30

5 respostas

56

você pode 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

dará a você todos os argumentos. Sua parte de SUNWscpu, "Compatibilidade de Origem, (Usr)"

    
por 11.11.2010 / 17:12
14

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 eles fiquem 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 sobrescrever sua cópia dos argumentos. Portanto, pode simplesmente não haver vestígios dos argumentos.

Algumas variantes unix mantêm uma cópia dos argumentos de alguma forma. O Solaris expõe alguns dados em /proc/$pid . A partir do OpenSolaris 2009.06, o único traço dos argumentos é em /proc/$pid/psinfo , onde eles são concatenados com espaços intermediários (para que você não possa distinguir entre foo "one" "two" e foo "one two" ) e a sequência resultante seja truncada para 80 bytes . Este campo em /proc/$pid/psinfo é o que ps imprime na coluna args .

A propósito, as opções -f e -l controlam quais campos são impressos, não se os campos são truncados para alguma largura.

    
por 11.11.2010 / 16:11
2

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

    
por 06.02.2015 / 20:10
0

Dependendo de qual comando ps você usa, eu uso

ps -auxw
    
por 02.12.2010 / 00:04
0

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

    
por 13.06.2013 / 07:58