Superviso varios procesos con, por ejemplo, '#top -p 22055,21995', pero hay muchos de ellos que comienzan con fwk*, es decir, fwk3_dev, fwk5_dev.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22055 admin 0 -20 832m 302m 41m S 20 2.5 14973:53 fwk3_dev
21995 admin 0 -20 834m 304m 41m S 14 2.6 10179:55 fwk5_dev
¿Cómo puedo monitorear usando el nombre de expresión regular del proceso fwk*? Me refiero a todos los procesos que comienzan desde 'fwk'.
Respuesta1
top
no hará esto por sí solo, pero podría escribir un script de shell simple que se ejecute top
en modo por lotes (la -b
opción), filtrandoesousando grep y en un bucle. No sería interactivo.
Por ejemplo
while :; do clear; top -b -n 1 |grep ' fwk' ;sleep 1; done
grep
reconoce expresiones regulares, si se le da la -E
opción. Pero su ejemplo se puede manejar simplemente con un espacio en blanco al principio y "fwk" (a menos que tenga un usuario con el mismo nombre).
Algunas versiones detop
Es posible que necesite una opción diferente (como -d
) para ejecutarse solo una vez en modo por lotes.
Respuesta2
# first generate a comma-separated list of matching PIDs
pids=$(ps a -o pid,args | awk '/[f]wk/ {print $1}' | xargs | sed -e 's/ /,/g')
# then run top with that list
top -p $pids
NOTA: si fwk*
se inicia algún proceso en el corto tiempo entre la generación de la lista y su ejecución top
, no se incluirá en la pantalla.