similar - comando top-c en linux para filtrar los procesos enumerados en base al nombre de proceso
top show process (8)
top -c
Arriba enumera todos los procesos, hay buenas opciones para filtrar los procesos por nombre de usuario utilizando la opción -u, pero me pregunto si hay alguna manera fácil de filtrar los procesos en función del nombre de proceso enumerado en la columna COMANDO del resultado superior.
Por ejemplo, me gustaría la opción top-some -substring of processname y top displays pids que solo tienen esta subcadena en su nombre de comando
Después de buscar tantas respuestas en , no he visto una respuesta que se ajuste a mis necesidades.
Es decir, hacer un comando superior para seguir actualizando con la palabra clave dada, y no tenemos que presionar CTRL + C / top una y otra vez cuando se generan nuevos procesos.
Así que hago uno nuevo ...
Aquí va la versión sin reinicio necesario.
__keyword=name_of_process; (while :; do __arg=$(pgrep -d'','' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; sleep 1; done;)
Modifique la __palabra clave y debería funcionar. (Ubuntu 2.6.38 probado)
2.14.2015 agregado: Falta la parte de la carga de trabajo del sistema con el código anterior. Para las personas que se preocupan por la parte de "promedio de carga":
__keyword=name_of_process; (while :; do __arg=$(pgrep -d'','' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; uptime; sleep 1; done;)
El comando de @ perreal funciona muy bien! Si lo olvida, intente en dos pasos ...
ejemplo: filtro superior para mostrar solo la aplicación llamada yakuake:
$ pgrep yakuake
1755
$ top -p 1755
útiles comandos interactivos superiores ''c'': alternar ruta completa vs. nombre de comando ''k'': matar por PID ''F'': filtrar por ... seleccionar con flechas ... luego presionar ''s'' para establecer el tipo
la respuesta a continuación también es buena ... Estaba buscando eso hoy, pero no pude encontrarlo. Gracias
La mayoría de las respuestas fallan aquí, cuando la lista de procesos supera los 20 procesos. Ese es el límite top -p
opción top -p
. Para aquellos con un superior antiguo que no admite el filtrado con o
opciones, aquí hay un ejemplo de secuencias de comandos para obtener una pantalla completa / salida de consola (falta información de resumen de esta salida).
__keyword="YOUR_FILTER" ; ( FILL=""; for i in $( seq 1 $(stty size|cut -f1 -d" ")); do FILL=$''/n''$FILL; done ; while :; do HSIZE=$(( $(stty size|cut -f1 -d" ") - 1 )); (top -bcn1 | grep "$__keyword"; echo "$FILL" )|head -n$HSIZE; sleep 1;done )
Algunas explicaciones
__keyword = your grep filter keyword
HSIZE=console height
FILL=new lines to fill the screen if list is shorter than console height
top -bcn1 = batch, full commandline, repeat once
Puede agregar filtros en la top
mientras se está ejecutando, simplemente presione la tecla oy luego escriba una expresión de filtro. Por ejemplo, para monitorear todos los procesos java use la expresión de filtro COMMAND=java
. Puede agregar varios filtros al presionar la tecla nuevamente, puede filtrar por usuario con la tecla u , y puede borrar todos los filtros con la tecla = .
Se puede hacer de forma interactiva
Después de ejecutar top -c
, presione o y escriba un filtro en una columna, por ejemplo, para mostrar las filas donde la columna COMMAND contiene la cadena foo, escriba COMMAND=foo
Si solo quieres un producto básico, esto podría ser suficiente:
top -bc |grep name_of_process
Terminé usando un script de shell con el siguiente código:
#!/bin/bash
while [ 1 == 1 ]
do
clear
ps auxf |grep -ve "grep" |grep -E "MSG[^/ ]*" --color=auto
sleep 5
done
Usando pgrep para obtener pid''s de líneas de comando coincidentes:
top -c -p $(pgrep -d'','' -f string_to_match_in_cmd_line)
top -p
espera una lista de pids separada por comas, por lo que usamos -d'',''
en pgrep. El indicador -f
en pgrep lo hace coincidir con la línea de comando en lugar del nombre del programa.
que tal esto?
top -c -p <PID>