Visualizando a Saída Completa do Comando PS


163

quando executo o ps -auxcomando no meu servidor linux, ao qual me conectei usando massa, poucos processos são longos demais para caber na largura atual da minha janela. Existe uma alternativa?

- Atualização -

Sinto muito pela desclassificação, achei que outras pessoas também não achariam a resposta útil, então fiz a desclassificação.

Aqui está a informação que você pediu.

hadoop-user@hadoop-desk:~$ echo $TERM
xterm

hadoop-user@hadoop-desk:~$ stty -a
speed 38400 baud; rows 47; columns 158; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

hadoop-user@hadoop-desk:~$ echo $COLUMNS
158

Como um aparte, você forneceu muito pouca informação; portanto, não deve rebaixar todas as respostas que obteve até o momento. Estamos tentando ajudá-lo. Você deve publicar a saída echo $TERM, stty -ae echo $COLUMNSna sua pergunta.
Alok Singhal

Tente stty ocrnle / ou stty sane?
Alok Singhal

29
ps axuwwEssa é a resposta;) Pelo menos para mim. Os duplicados wwfizeram.
Brutuscat

Respostas:


145

É provável que você esteja usando um pager como lessou, mostpois a saída de ps auxé maior que uma tela. Nesse caso, as opções a seguir farão com que (ou force) linhas longas sejam quebradas em vez de truncadas.

ps aux | less -+S

ps aux | most -w

Se você usar um dos seguintes comandos, as linhas não serão quebradas, mas você poderá usar as teclas de seta ou outras teclas de movimento para rolar para a esquerda e para a direita.

ps aux | less -S    # use arrow keys, or Esc-( and Esc-), or Alt-( and Alt-) 

ps aux | most       # use arrow keys, or < and > (Tab can also be used to scroll right)

As linhas são sempre agrupadas para moree pg.

Quando ps auxusado em um tubo, a wopção é desnecessária, pois pssomente usa a largura da tela quando a saída é para o terminal.


21
Observe que no Linux ainda há um limite de 4096 caracteres codificados no código do kernel: veja stackoverflow.com/questions/199130/…
Mariano Paniga 13/13/13

3
@ MarianoPaniga: Você salvou minha vida com esse comentário.
stackular

a maioria? você quer dizer mais?
Mike Furlender

@ MikeFurlender: Não, mosté outro pager. Eu adicionei um link na minha resposta.
Pausado até novo aviso.

@DennisWilliamson Sua afirmação sobre wnão ser necessária ao usar um pipe parece ser dependente do sistema. No openSUSE Leap 15.0 e no Ubuntu 18.04, comandos como ps aux | grep <something>atuam na saída de pstruncado pela largura do terminal.
Pkeller

149

Usando os auxwwsinalizadores, você verá o caminho completo para a saída na janela do terminal e nos scripts de shell.

darragh@darraghserver ~ $uname -a
SunOS darraghserver 5.10 Generic_142901-13 i86pc i386 i86pc

darragh@darraghserver ~ $which ps
/usr/bin/ps<br>

darragh@darraghserver ~ $/usr/ucb/ps auxww | grep ps
darragh 13680  0.0  0.0 3872 3152 pts/1    O 14:39:32  0:00 /usr/ucb/ps -auxww
darragh 13681  0.0  0.0 1420  852 pts/1    S 14:39:32  0:00 grep ps

ps auxlista todos os processos executados por todos os usuários. Veja man pspara detalhes. O wwsinalizador define largura ilimitada.

-w         Wide output. Use this option twice for unlimited width.
w          Wide output. Use this option twice for unlimited width.

Encontrei a resposta no seguinte blog:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
Esta é uma resposta melhor do que a atual solução aceita, porque nem todos os sistemas (linux incorporado) incluem pagers 'mais', 'mais' ou 'menos'.
precisa saber é o seguinte

ou,ps auxf > ps.log
Marslo 14/05


64

Basta jogá-lo no gato, que enrola automaticamente

ps aux | cat

você pode elaborar, mas mais.
MZaragoza

10
Boa solução para distribuições linux leves como o BusyBox, onde ferramentas avançadas não estão disponíveis :)
Lion

fácil de lembrar também!
FzN

Muito muito simples catO comando está em todas as caixas nix disponíveis.
Ligemer

15

Passar alguns wsegundos ignorará a largura da tela.


Você tentou adicionar mais de um?
Ignacio Vazquez-Abrams

Eu tentei adicionar mais de 5 .. mas de alguma forma ele não mostra o comando completo.
Boolean

1
Depois de chegar a 3, você está vendo tudo o que existe. Nada além do que mostra é visível para qualquer programa. Você tem um problema diferente.
Ignacio Vazquez-Abrams

11

Se você estiver especificando o formato de saída manualmente, também precisará garantir que a argsopção seja a última na lista de campos de saída, caso contrário, será truncada.

ps -A -o args,pid,lstart

/usr/lib/postgresql/9.5/bin 29900 Thu May 11 10:41:59 2017
postgres: checkpointer proc 29902 Thu May 11 10:41:59 2017
postgres: writer process    29903 Thu May 11 10:41:59 2017
postgres: wal writer proces 29904 Thu May 11 10:41:59 2017
postgres: autovacuum launch 29905 Thu May 11 10:41:59 2017
postgres: stats collector p 29906 Thu May 11 10:41:59 2017
[kworker/2:0]               30188 Fri May 12 09:20:17 2017
/usr/lib/upower/upowerd     30651 Mon May  8 09:57:58 2017
/usr/sbin/apache2 -k start  31288 Fri May 12 07:35:01 2017
/usr/sbin/apache2 -k start  31289 Fri May 12 07:35:01 2017
/sbin/rpc.statd --no-notify 31635 Mon May  8 09:49:12 2017
/sbin/rpcbind -f -w         31637 Mon May  8 09:49:12 2017
[nfsiod]                    31645 Mon May  8 09:49:12 2017
[kworker/1:0]               31801 Fri May 12 09:49:15 2017
[kworker/u16:0]             32658 Fri May 12 11:00:51 2017

mas ps -A -o pid,lstart,argsvocê obtém a linha de comando completa:

29900 Thu May 11 10:41:59 2017 /usr/lib/postgresql/9.5/bin/postgres -D /tmp/4493-d849-dc76-9215 -p 38103
29902 Thu May 11 10:41:59 2017 postgres: checkpointer process   
29903 Thu May 11 10:41:59 2017 postgres: writer process   
29904 Thu May 11 10:41:59 2017 postgres: wal writer process   
29905 Thu May 11 10:41:59 2017 postgres: autovacuum launcher process   
29906 Thu May 11 10:41:59 2017 postgres: stats collector process   
30188 Fri May 12 09:20:17 2017 [kworker/2:0]
30651 Mon May  8 09:57:58 2017 /usr/lib/upower/upowerd
31288 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31289 Fri May 12 07:35:01 2017 /usr/sbin/apache2 -k start
31635 Mon May  8 09:49:12 2017 /sbin/rpc.statd --no-notify
31637 Mon May  8 09:49:12 2017 /sbin/rpcbind -f -w
31645 Mon May  8 09:49:12 2017 [nfsiod]
31801 Fri May 12 09:49:15 2017 [kworker/1:0]
32658 Fri May 12 11:00:51 2017 [kworker/u16:0]

9

você pode definir o formato de saída, por exemplo, para ver apenas o comando e a identificação do processo.

ps -eo pid,args

veja a página de manual do ps para mais formato de saída. Como alternativa, você pode usar o -wou--width n opções .

Se tudo mais falhar, aqui está outra solução alternativa (apenas para ver seus longos cmds)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline

1
alterar a ordem e tente novamente, pid, args
ghostdog74

3

Desculpe chegar atrasado à festa, mas encontrei esta solução para o problema.

As linhas são truncadas porque ps insiste em usar o valor de $ COLUMNS, mesmo que a saída não seja a tela naquele momento. O que é um bug, IMHO. Mas fácil de contornar, basta fazer o ps pensar que você tem uma tela super ampla, ou seja, defina COLUMNS alto durante o comando ps. Um exemplo:

$ ps -edalf                 # truncates lines to screen width
$ COLUMNS=1000 ps -edalf    # wraps lines regardless of screen width

Espero que isso ainda seja útil para alguém. Todas as outras idéias pareciam muito complicadas :)


1

Se nenhuma das soluções acima funcionar, a saída de psnão é seu problema. Talvez você precise definir massa para quebrar longas filas ?

Caso contrário, precisamos de mais informações.


Ah bem. Há algo estranho acontecendo.
Alok Singhal

1

Se grepo comando que você está procurando com um pipe do ps aux, ele envolverá o texto automaticamente. Eu usei muitas das outras respostas aqui, mas às vezes, se você estiver procurando por algo específico, é bom usar grepe você sabe que isso envolverá linhas.

Por exemplo ps aux | grep ffmpeg.



0

Evidência de truncamento mencionada por outros (um exemplo pessoal)

foo=$(ps -p 689 -o command); echo "$foo"

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtime/kernel-5732db1a-d484-4a58-9d67-de6ef5ac721b.json

Isso ^^ captura essa saída longa em uma variável Em oposição a

ps -p 689 -o command

COMMAND
/opt/conda/bin/python -m ipykernel_launcher -f /root/.local/share/jupyter/runtim

Desde que eu estava tentando isso em um notebook Docker jupyter, eu precisava executá-lo com o estrondo, é claro.

!foo=$(ps -p 689 -o command); echo "$foo"

Surpreendentemente, os notebooks jupyter permitem que você execute isso mesmo! Mas fico feliz em ajudar a encontrar o notebook ofensivo ocupando toda a minha memória = D

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.