Respuestas:
¿Por qué usarlo ps
cuando puedes hacerlo fácilmente con el top
comando?
Si debe usar ps
, intente esto:
ps aux | sort -nrk 3,3 | head -n 5
Si quieres algo que sea realmente 'top'esq con actualizaciones constantes, usa watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
funciona realmente.
top
lee la lista de procesos y mostrar el resultado por sí solo sin la tubería a cualquier otro proceso
La respuesta correcta es :
ps --sort=-pcpu | head -n 6
Por lo tanto, puede especificar columnas sin interferir con la ordenación.
Ex:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
Nota para MAC OS X : en Mac OS X, ps
no reconoce --sort
, pero ofrece -r
ordenar por el uso actual de la CPU. Por lo tanto, para Mac OS X puede usar:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash
(x2, o head
también) ps
...
sort
, el segundo muestra cómo especificar columnas sin interferir con la ordenación. Al explicar algo ... siempre es mejor ser conciso y explicar una cosa a la vez.
Dependiendo de sus necesidades, puede encontrar esto un poco más legible:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
salida de muestra:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
(los campos son% CPU, PID, USUARIO, COMANDO)
No creo que ps
sea lo que estás buscando. ¿Has mirado la salida de top
?
Si tiene GNU-Top, intente usar su modo por lotes para escupir una lista de procesos ordenada por uso de CPU y usar head / tail para obtener las 5 primeras líneas (los primeros 8 son encabezados):
top -b -n 1 | head -n 12 | tail -n 5
La parte superior de BSD parece comportarse de manera diferente y no tiene un modo no interactivo, así que use una de las otras ps
soluciones basadas.
top -o cpu -n 5
una forma de lograr lo mismo. ¿Alguien sabe? Mi top
es diferente a tu top
.
-o
y -n
establece la cantidad de veces que actualiza la pantalla antes de salir.
top
no parece tener un modo por lotes, lo cual es bastante limitante. Debe haber alguna forma de canalizar top
otros comandos. Investigaré un poco.
top
funcionó como se describe esta tarde. Salud.
El revestimiento más rápido que he encontrado para esto (nota 6 porque el encabezado se suma):
ps aux k-pcpu | head -6
Tenga en cuenta que las versiones actuales de ps tienen la capacidad de clasificación dentro de ellos, en función de los códigos de campo (que figuran en la página de manual de ps). El código de campo para el uso del procesador es "c". Puede usar --sort c
al final de un comando ps, por ejemplops aux --sort c
Esto colocará el proceso usando la mayor cantidad de CPU al final de la lista. Invierta el orden de la lista agregando un signo menos al código de campo utilizado para ordenar, por ejemplops aux --sort -c
Para agregar un punto a otras respuestas valiosas, prefiero:
ps auxk-c | head -6
También imprime el encabezado, lo cual es bueno.
Aquí k
es idéntico --sort
y c
especifica el campo de uso de la CPU (alias %cpu
) para la ordenación, mientras que -
es para la ordenación inversa.
Es posible añadir más especificadores separadas por ,
, otros especificadores posibles son: %mem
, args
, bsdstart
, pid
, gid
, uid
... donde puede encontrar una lista completa de los especificadores de formato ESTÁNDAR sección de la página hombre. Por ejemplo:
ps auxk -gid,-%mem | head -11
imprimiría 10 procesos con el ID de grupo más alto, ordenados internamente por uso de memoria.
La herramienta de línea de comandos ps
tiene su propia opción de clasificación, por lo que prefiero:
$ ps -eo pcpu,args --sort=-%cpu | head
Puede agregar las columnas que desee. Vea qué otras opciones están disponibles en la ps
página del manual.
$ man ps
top
en Mac OS X tiene una opción de modo de registro en forma de top -l numberOfSamples
(que parece ser el equivalente al modo por lotes de GNU top
). Sin embargo, es necesario tener al menos dos muestras porque "la primera muestra mostrada tendrá un% de CPU no válido para cada proceso, ya que se calcula utilizando el delta entre muestras" ( man 1 top
).
# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
Creo que la forma más sencilla de ver los 5 principales procesos que consumen CPU es,
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
Para ver los 5 principales procesos que consumen memoria es,
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
Dónde,
-e
: Esta bandera se usa para seleccionar todo el proceso
-o
: Este indicador se usa para formatear como definido por el usuario.
pid
: Este argumento se usa para mostrar pid
comm
: Este argumento se usa para mostrar solo el nombre del comando. Para obtener el uso completo del comando args
, cmd
ocommand
%cpu
: Este argumento muestra el porcentaje de utilización de la CPU del proceso en formato "##. #". Aquí pcpu
también se puede utilizar.
%mem
: Este argumento muestra la proporción del tamaño del conjunto residente del proceso con respecto a la memoria física en la máquina, expresada como un porcentaje. Aquí pmem
también se puede utilizar.
--sort
: Especifique el orden de clasificación. Después de que =
el -
signo se utiliza para ordenar el valor más alto en la parte superior, donde la opción predeterminada +
es enumerar el orden numérico creciente [es decir, 0 a n].