Linux: Listar procesos por % cpu o uso de memoria

Con estas dos secuencias de comandos podréis ver de un modo rápido y sencillo los procesos ordenados por uso (%) de CPU y memoria. Por supuesto no es necesario (ni práctico) escribir el comando completo en la shell cada vez que lo queráis ejecutar, os recomiendo crear un alias específico para cada uno de ellos.

Listar procesos por % cpu, veréis que eliminamos aquellos que usan 0.0 de CPU con sed (sed ‘/^ 0.0 /d):

ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'

Ejemplo:

$ ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'
%CPU CPU  NI S     TIME COMMAND
0.2   -   0 S 00:00:24 metacity
0.2   -   0 S 00:00:00 /usr/bin/python /usr/bin/terminator
0.2   -   0 S 00:00:28 gnome-screensaver
0.2   -   0 S 00:00:31 gnome-panel
4.6   -   0 S 00:08:23 /usr/bin/pulseaudio --start
7.4   -   0 S 00:13:24 /usr/X11R6/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
7.5   -   0 S 00:04:31 rhythmbox
14.4   -   0 S 00:08:50 /usr/lib/firefox-3.5.4/firefox-3.5

Listar procesos por uso de memoria (en KB):

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS

Ejemplo (reducido):

$ ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS
23964 gnome-panel
26168 nautilus
26256 /usr/bin/python /usr/bin/terminator
58340 /usr/X11R6/bin/X :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
58728 rhythmbox
128736 /usr/lib/firefox-3.5.4/firefox-3.5

Encontrado en pixelbeat

15 comentarios en “Linux: Listar procesos por % cpu o uso de memoria

  1. Hoy no comento por curro, tranquilo :-P

    Has pensado en crear una wikipedia o algo por el estilo para que sea de facil acceso y organizacion con todo lo que llegas a saber?

    Suerte!

  2. Es que yo queria hacer una wikipedia, pero al final no la hice, si quieres, te puedo intentar ayudar… Una dokuwiki no cuesta mucho de instalar, y es facil de manejar.

    Suerte!

    P.D.: no todo ivan a ser preguntas del curro.

  3. Saludos amigo,

    Buen post.

    Yo estoy buscando mas o menos parecido pues necesito todas las mañana chequear el server y tomar datos, ahora bien, me gustaría consultarte lo siguiente:
    1.- A traves de este comenado:
    $ ps -e -o pcpu,cpu,nice,state,cputime,args –sort pcpu | sed ‘/^ 0.0 /d’
    Como hago para filtrar que solamente me traiga los primeros 10 trabajos o mejor aun, como hago para que me agrupe el resultado por comando, por ejemplo que me diga cuanta memoria, cpu para el comando HTTPD?
    2.- Exactamente que hace el segundo comando?

    Gracias mil por tu respuesta a estas dudas.

  4. alguno de ustedes sabe secuencias de comandos que indiquen los 3 primeros procesos que están consumiendo más CPU por un lado y por otro los 3 primeros que están consumiendo más memoria ordenados por el nombre de proceso.

    • chicos aquí un comando que te lista los procesos agrupados por comando y que te dice cuantos procesos son. Y el % de consumo de CPU:
      ps -eo pcpu,pid,user,command –sort -pcpu | perl -lne ‘if(m/^\s*([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.*)$/){ $h{$4}{sum}+=$1;$h{$4}{count}++;}’ -e ‘END{foreach $i(sort { $h{$b}{sum}$h{$a}{sum}} keys %h){ $tt+=$h{$i}{sum}; printf “%13.2f\%: %d: %s\n”,$h{$i}{sum},$h{$i}{count},$i if($h{$i}{sum}>1);} printf “Total: %13.2f\%\n”, $tt;}

      espero les sirva.
      admin@palermo.edu

  5. para saber el uso de memoria igual que el se explica el uso de cpu sin lo que consume 0 se puede escribir así:
    ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS |sed ‘s/\ //g;/^0/d’

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *