Monitorización de procesos: pgrep, pkill y psg
Muchas veces os habréis encontrado con que queréis matar una aplicación que no responde y al hacer un ps veis que hay varios procesos que pertenecen a la misma aplicación, entonces no que más remedio que matar los procesos uno a uno. Bueno, eso era así antes de conocer pgrep y pkill. pgrep es una herramienta que dado un nombre de proceso muestra por pantalla los pid’s de todos los procesos con ese nombre y pkill es su complemento que en lugar de mostrar los procesos los mata directamente.
Ejecutaremos unas cuantas veces yes redirigiendo su salida a /dev/null y poniendo el proceso en background para tener algo con lo que trabajar:
jgr@seiya ~ $ yes &> /dev/null & yes &> /dev/null & yes &> /dev/null & [1] 3670 [2] 3671 [3] 3672
Si hacemos ahora un ps de los de toda la vida veremos esto (la última línea es el propio grep):
jgr@seiya ~ $ ps aux | grep yes jgr 3670 42.8 0.0 4164 584 pts/2 R 20:12 0:19 yes jgr 3671 41.4 0.0 4164 584 pts/2 R 20:12 0:19 yes jgr 3672 42.8 0.0 4164 584 pts/2 R 20:12 0:19 yes jgr 4244 0.0 0.0 6368 808 pts/2 S+ 20:13 0:00 grep --colour=auto yes
Ahora con pgrep veremos sólo los pid’s de los procesos:
jgr@seiya ~ $ pgrep yes 3670 3671 3672
Y con pkill los matamos y con pgrep comprobaremos que estén realmente muertos:
jgr@seiya ~ $ pgrep yes [1] Terminado yes >&/dev/null [2]- Terminado yes >&/dev/null [3]+ Terminado yes >&/dev/null
pgrep y pkill tienen algunas opciones interesantes como por ejemplo -l para mostrar el nombre de los procesos (sólo pgrep) o -u/-U para mostrar o matar sólo los procesos del usuario especificado y alguna más que podéis ver en el man de pgrep.
Bueno y ya que estamos con ps os enseñaré un alias que suelo usar en el .bashrc para hacer más cómodo el uso de ps:
export GREP_COLOR="1;32" #verde claro alias grep='grep --colour=auto' alias psg="ps aux | grep -v grep | grep"
Básicamente lo que hacen estos alias es colorear las concordancias del grep y eliminar la última línea de la salida del ps que corresponde al propio grep. Aquí podéis ver un ejemplo otra vez con el proceso yes del ejemplo anterior:
