Existe uma maneira de gerar uma lista de processos completa no solaris, sem linhas truncadas? Eu tentei o ps
comando, com os seguintes argumentos:
-f Gera uma lista completa. (Veja abaixo para importância 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 um corda. A implementação pode truncar esse valor para a largura do campo; isto é dependente da implementação, se houver truncamento adicional ocorre. Isto é não especificado se a sequência representado é uma versão do argumento lista como foi passada para o comando quando foi iniciado ou é uma versão do argumentos, pois eles podem ter sido modificados pelo aplicativo. Os aplicativos não podem dependem de poder modificar seus lista de argumentos e tendo essa modificação refletida na saída de ps. A implementação Solaris limita o string para 80 bytes; a corda é a versão da lista de argumentos como era passado para o comando quando iniciado.
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 voltando 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?
ps
comando? Nesse caso, atualize a pergunta para que fique mais clara.Respostas:
você poderia tentar
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)
lhe dará todos os argumentos. Sua parte do SUNWscpu, "Compatibilidade de Origem, (Usr)"
fonte
pargs
mostra a cópia em andamento dos argumentos da linha de comandos (e, opcionalmente, o ambiente). É bom saber, obrigado!O kernel não é necessário para acompanhar os argumentos da linha de comando. Quando um programa é iniciado por meio da
execve
chamada, o kernel deve copiar os argumentos na memória do processo (para que estejam disponíveis comoargv
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 no
/proc/$pid
. A partir do OpenSolaris 2009.06, o único rastreio dos argumentos está em/proc/$pid/psinfo
, onde eles são concatenados com espaços no meio (para que você não possa distinguir entrefoo "one" "two"
efoo "one two"
) e a sequência resultante é truncada para 80 bytes. Esse campo/proc/$pid/psinfo
é o que éps
impresso naargs
coluna.A propósito, as opções
-f
e-l
controlam quais campos são impressos, não se os campos estão truncados com alguma largura.fonte
ps -e
fornece a lista de todos os processos em execução. Também tem issops -elf
.fonte
Dependendo de qual
ps
comando você usa, eu usofonte
prstat
fornecerá os processos atualmente em execução, juntamente com seus pids e a utilização da CPU.fonte