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:
#!/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.
Interesante. seria lo mismo que hacer killall proceso no ?
Si, lo mismo.
Hace tiempo, en algunos solaris no existia el killall.
Salu2
I don´t understand why do you need to use “grep -v grep” in the midle. What is doing?
Perdona, que estabamos en español, el cuadro del comentario en ingles me ha hecho pensar que estabamos en ingles: por qué necesitas usar el “grep -v grep”. No le encuentro sentido. La verdad es que lo he usado sin el “grep -v grep” y usandolo y los resultados que me dan son un poco distintos. Estaría bien el por qué se utiliza.
El menos -v se usa para quitar lo que viene despues del -v
Asi en el resultado no verias la linea del grep
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
muy bueno, me ha servido para cerrar la consola de un script que he creado
Pingback: Matar Procesos en Linux | El Taller del BIT