“ps -ew” não mostrará saída ampla

1

Mostra apenas os 15 primeiros caracteres de / proc / pid / stat. Mas "ps -w pid" mostra uma saída ampla. Por quê? Isso é um inseto? Obrigado.

    
por fossilet 08.04.2011 / 16:21

4 respostas

1

Eu não acho que "saída ampla" significa o que você quer. Eu criei um script chamado foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo.sh e obtenho o seguinte

$ ps -w
27848 pts/3    00:00:00 foo_foo_foo_foo

$ ps a
27848 pts/3    S      0:00 /bin/bash ./foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo.sh

$ ps -f
username 28049 26422  0 09:48 pts/3    00:00:00 /bin/bash ./foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo.sh

A única coisa w e -w parecem fazer é deixar linhas embrulhar se eu encolher a janela para que ele não vai caber em uma linha:

$ ps w
28429 pts/3    S      0:00 /bin/bash ./foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_foo_fo
o_foo_foo.sh
    
por 08.04.2011 / 16:56
1

Você pode fazer isso explicitamente listando os campos:

ps -ew -o pid,tty,time,cmd

Ou no estilo BSD:

ps awxo pid,tty,time,cmd

Provavelmente útil em um script, não tão útil para a linha de comando. A menos que você faça um pseudônimo.

    
por 09.04.2011 / 21:34
0

Experimente ps -efww .

No Debian / Ubuntu, isso dá a você:

   -w              Wide output. Use this option twice for unlimited width.
    
por 08.04.2011 / 17:42
0

Obrigado por todos os comentários acima que me esclarecem.

ps -ew não contém opções BSD, então eu recebo a saída padrão, que recebe o nome do processo de /proc/<pid>/stat , que não é mais do que 15 caracteres.

A opção -w está de fato em vigor, mas mostra uma saída ampla. Se eu diminuir a janela muito estreita, ps -ew tentará quebrar as linhas para que eu ainda receba os 15 caracteres completos na coluna COMMAND. Mas sem o -w , como ps -e , as linhas longas não são vistas, mas elas ainda estão lá, pois não consigo vê-las, mas posso grep delas.

Em um terminal de 35 colunas (alguma saída é cortada):

$ /bin/ps -e
  PID TTY          TIME CMD
22125 ?        00:00:00 telepathy-s
22127 ?        00:00:00 telepathy-g

$ /bin/ps -e | grep gabbl
22127 ?        00:00:00 telepathy-gabbl

A partir de ps -w <pid> , encontro a resposta do parser.c do código-fonte do procps. Isso implica na saída do estilo BSD se houver argumentos PID, o que não é dito na página man:

   if((tmp>='0') && (tmp<='9'))   return ARG_PID;
   ......
   case ARG_PID:
          prefer_bsd_defaults = 1;
          err = parse_trailing_pids();

Portanto, ps -w <pid> mostrará a saída no estilo BSD, que mostrará os argumentos de comando (COMMAND) em vez do nome do executável (CMD). -w está em vigor semelhante ao exemplo acima.

    
por 12.04.2011 / 10:00

Tags