Respuestas:
¿Por qué usarlo pscuando puedes hacerlo fácilmente con el topcomando?
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
topfunciona realmente.
toplee 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, psno reconoce --sort, pero ofrece -rordenar 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 headtambié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 pssea 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 pssoluciones basadas.
top -o cpu -n 5una forma de lograr lo mismo. ¿Alguien sabe? Mi topes diferente a tu top.
-oy -nestablece la cantidad de veces que actualiza la pantalla antes de salir.
topno parece tener un modo por lotes, lo cual es bastante limitante. Debe haber alguna forma de canalizar topotros comandos. Investigaré un poco.
topfuncionó 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 cal 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í kes idéntico --sorty cespecifica 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 pstiene 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 pspágina del manual.
$ man ps
topen 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, cmdocommand
%cpu: Este argumento muestra el porcentaje de utilización de la CPU del proceso en formato "##. #". Aquí pcputambié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í pmemtambié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].