Ver salida completa del comando PS


163

cuando ejecuto el ps -auxcomando en mi servidor Linux, al que me conecté usando masilla, pocos procesos son demasiado largos para caber en el ancho de mi ventana actual. ¿Hay una alternativa?

- Actualización -

Lamento la degradación, pensé que otros no encontrarían la respuesta útil también, así que la rebajé.

Aquí está la información que solicitó.

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

Por otro lado, ha proporcionado muy poca información, por lo que no debe rechazar todas las respuestas que ha recibido hasta ahora. Estamos intentando ayudarte. Usted debe enviar la salida echo $TERM, stty -ay echo $COLUMNSen su pregunta.
Alok Singhal el

Probar stty ocrnly / o stty sane?
Alok Singhal el

29
ps axuwwEsa es la respuesta;) Al menos para mí. El doble lo wwhizo.
brutuscat

Respuestas:


145

Es probable que esté utilizando un buscapersonas como lesso mostya que la salida de ps auxes más larga que una pantalla completa. Si es así, las siguientes opciones provocarán (o forzarán) líneas largas para ajustarse en lugar de truncarse.

ps aux | less -+S

ps aux | most -w

Si usa cualquiera de los siguientes comandos, las líneas no se ajustarán, pero puede usar las teclas de flecha u otras teclas de movimiento para desplazarse hacia la izquierda y hacia la derecha.

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)

Las líneas siempre se envuelven para morey pg.

Cuando ps auxse usa en una tubería, la wopción es innecesaria ya que pssolo usa el ancho de la pantalla cuando la salida es al terminal.


21
Tenga en cuenta que en Linux todavía hay un límite de 4096 caracteres codificados en el código del núcleo: consulte stackoverflow.com/questions/199130/…
Mariano Paniga

3
@MarianoPaniga: Me salvaste la vida con ese comentario.
stackular

¿más? quieres decir mas?
Mike Furlender

@ MikeFurlender: No, mostes otro localizador. Agregué un enlace en mi respuesta.
Pausado hasta nuevo aviso.

@DennisWilliamson Su declaración sobre wno ser necesaria cuando se usa una tubería parece depender del sistema. Tanto en openSUSE Leap 15.0 como en Ubuntu 18.04, comandos como ps aux | grep <something>actúan en la salida de pstruncados por el ancho del terminal.
pkeller

149

Usando las auxwwbanderas, verá la ruta completa de salida tanto en su ventana de terminal como desde los 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 auxenumera todos los procesos ejecutados por todos los usuarios. Ver man pspara más detalles. La wwbandera establece un ancho ilimitado.

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

Encontré la respuesta en el siguiente blog:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/


10
Esta es una mejor respuesta que la solución actual aceptada porque no todos los sistemas (Linux integrado) incluyen 'más', 'más' o 'menos' buscapersonas.
frakman1

o,ps auxf > ps.log
Marslo


64

Solo tíralo sobre el gato, que se ajusta automáticamente

ps aux | cat

puedes elaborar, pero más.
MZaragoza

10
Buena solución para distribuciones de Linux livianas como BusyBox, donde las herramientas avanzadas no están disponibles :)
Lion

¡fácil de recordar también!
fzN

Muy muy simple. catel comando está en cada caja de nix por ahí.
Ligemer


11

Si está especificando el formato de salida manualmente, también debe asegurarse de que la argsopción sea la última en la lista de campos de salida; de lo contrario, se truncará.

ps -A -o args,pid,lstart da

/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

pero ps -A -o pid,lstart,argste da la línea 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

puede establecer el formato de salida, por ejemplo, para ver solo el comando y la identificación del proceso.

ps -eo pid,args

Consulte la página de manual de ps para obtener más formatos de salida. alternativamente, puede usar las opciones -wo --width n.

Si todo lo demás falla, aquí hay otra solución alternativa (solo para ver sus cmds largos)

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

1
cambie el orden e intente nuevamente, pid, args
ghostdog74

3

Lamento llegar tarde a la fiesta, pero acabo de encontrar esta solución al problema.

Las líneas se truncan porque ps insiste en usar el valor de $ COLUMNS, incluso si la salida no es la pantalla en ese momento. Lo cual es un error, en mi humilde opinión. Pero fácil de solucionar, solo haga que ps piense que tiene una pantalla súper ancha, es decir, configure COLUMNAS altas durante la duración del comando ps. Un ejemplo:

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

Espero que esto siga siendo útil para alguien. Todas las otras ideas parecían demasiado complicadas :)



1

Si tiene grepel comando que está buscando con una tubería de ps aux, ajustará el texto automáticamente. Utilicé muchas de las otras respuestas aquí, pero a veces si estás buscando algo específico, es bueno usarlo grepy sabes que envolverá las líneas.

Por ejemplo ps aux | grep ffmpeg.



0

Evidencia de truncamiento mencionada por otros, (un ejemplo personal)

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

Eso ^^ captura esa salida larga en una variable en lugar de

ps -p 689 -o command

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

Como estaba intentando esto desde un portátil Docker jupyter, necesitaba ejecutar esto con la explosión, por supuesto ...

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

¡Sorprendentemente, los cuadernos jupyter te permiten ejecutar incluso eso! Pero me alegro de ayudar a encontrar el cuaderno ofensivo que ocupa toda mi memoria = D

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.