Quien no se ha encontrado alguna vez con un proceso con muchos hijos, un apache desbocado o muchos procesos zombies que consumen todo los recursos de la maquina. Con este script podemos matar todos los procesos que se llamen de una determinada forma de una vez.
El script es el siguiente:
1 2 | #!/bin/sh kill -9 `ps -ef|grep -v grep |grep $1| awk '{print $2}'` |
La Explicacion es la siguiente:
ps -ef|grep -v grep |grep $1 con estos comandos mostramos todos los procesos que hay en la maquina que se llamen $1. $1 es una variable que le pasaremos al script cuando lo invoquemos.
La salida de estos comandos solo seria:
juan@elsotanilllo:~/scripts$ ps -ef|grep -v grep |grep proceso root 2259 1 0 Jul26 tty1 00:00:00 proceso root 2265 1 0 Jul26 tty2 00:00:00 proceso root 2266 1 0 Jul26 tty3 00:00:00 proceso root 2267 1 0 Jul26 tty4 00:00:00 proceso root 2268 1 0 Jul26 tty5 00:00:00 proceso root 2269 1 0 Jul26 tty6 00:00:00 proceso
awk ‘{print $2}’ con el awk filtramos la segunda columna, que es la que nos interesa ya que es la que tiene los PID (identificadores de proceso) que es lo que entiende el Kill. La salida de los comandos hasta ahora seria:
juan@elsotanilllo:~/scripts$ ps -ef|grep -v grep |grep proceso 2259 2265 2266 2267 2268 2269
Una vez que ya tenemos los PID, tan solo queda matarlos con el kill -9
Después de escribir el script por ejemplo con el nombre MataProcesos.sh, tenemos que hacerlo ejecutable:
juan@elsotanilllo:~/scripts$ chmod +x MataProcesos.sh
Uso del Script:
Para usarlo, lo único que tenemos que hacer es llamarlo y pasarle como parámetro el nombre del proceso que queramos matar: httpd, samba, gcc, etc.
juan@elsotanilllo:~/scripts$ ./MataProcesos.sh httpd
Este ejemplo mataría todos los procesos httpd de la maquina, siempre que el usuario que ejecuta el script tenga suficientes privilegios.