Ir al contenido
ice

Matar un proceso desde la terminal en GNU/Linux

Recommended Posts

26bfb-oracle-linux

 

Aprender como matar los procesos que no corresponden o que provocan algún problema en nuestro sistema y queremos cerrarlo, en éste how to les mostraré como hacer.

 

Imaginamos lo siguiente: Se ejecutó una aplicación (desde el menú de aplicaciones o desde la misma terminal por ejemplo) y ésta comienza a funcionar, solo que deja de funcionar por algún motivo (el que quieran) de manera inesperada. Entonces se intenta ejecutar nuevamente pero resulta que el proceso anterior jamás se cerró entonces no podemos utilizarla.

 

Que se debería hacer en éstos casos? Matar el proceso anterior, pero la pregunta es cómo hacer éso? Simple. su mejor opción generalmente se encuentra dentro de la terminal o la tty. Afortunadamente, GNU/Linux tiene todas las herramientas necesarias para ayudarnos a solucionar ésto y poder "matar el proceso que nos molesta". Sim embargo, antes de lanzar o ejecutar el comando que nos permitirá realizar la tarea que les comenté hace un momento, primero debemos saber cuál es el proceso. ¿Cómo hacemos éso? Una vez que conozcan la herramienta veran que es sencillo.

 

Ahora les mostraré dichas herramientas y quiero aclarar que los pasos que comentaré a continuación es válido para prácticamente cualquier distribución de GNU/Linux ya sea en sus versiones de escritorio o servidores. Asi que ahora abrimos la terminal y comencemos!

 

Buscar el proceso:

 

Para eliminar el proceso que no responde es, lógicamente, ubicarlo. Hay dos comandos que se utilizan para locarlizar un proceso que son los siguientes: top y ps. La primer órden que nombre (top) es una de las principales que cualquier administrador de sistemas debería conocer. Cuando la ejecutamos:

$ top

Nos aparecerá un listado completo de cada proceso que se está ejecutando actualmente en nuestro equipo, dependiendo de los servicios, programas, etc. Será la cantidad de procesos, no siempre será igual, pero dejo a continuación mi listado:

 

1.png

 

De ésta lista pueden ver información de mi equipo que se está ejecutando en éste mimos momento (en el que escribo ésta entrada para ustedes, si para ustedes!) Bueno entonces podemos suponer que, por ejemplo, Thunar no se encuentra funcionando correctamente, entonces lo que haremos será buscar el proceso de Thunar y el número de PID, que esta última es la más importante para poder eliminar el proceso activo.

 

Antes de ir directo a la órden que utilizo, quiero detallar un poco sobre algunos detalles que considero importantes. Digamos que sabemos que el proceso es Thunar como dijimos que es al que vamos a matar, pero no queremos mirar ni en tiempo en que se está ejecutando, el tipo de órden, etc. Asi que para ésto vamos a usar el comando ps y vamos a filtrar la salida con grep usando una tubería también.

 

El comando ps informa una dem anera instantánea de un proceso actual y grep nos mostrará sólamente las líneas que coinciden con un determinado patrón. Ahora, la razón por el cuál uso grep es simple, ya que al usar ps sólo puede arrojar un listado de exactamente todos los procesos ejecutándose, el listado puede ser amplio (como mostré en la foto anterior), entonces con la tubería y grep sólo veremos todo lo que esté asociado a Thunar, entonces se verá así:

$ ps aux | grep Thunar

2.png Luego de la órden ps, utilicé otro tipos de indicadores que

 

ahora los detallo para dejar en claro todo:

a = Muestra los proceso para todos los usuarios.
u = Muestra el usuario o el dueño del proceso ejecutándose.
x = También muestra los proceso que no están en una terminal.

La opción x es importante cuando buscamos información con respecto a una aplicación gráfica.

 

Cuando se ejecute la órden anterior, nos dará toda la información que necesitamos para poder matar el proceso de manera sencilla y con el número de PID, que en éste caso es el proceso número de PID 17107.

 

Para matar el proceso haremos lo siguiente:

 

Cuando llegamos a la tarea directamente de matar el proceso tenemos tendremos dos pasos a mirar que son muy importantes que son:

* Nombre del proceso, en éste caso se llama Thunar. * Número de PID del proceso que sería el 17107.

Con ésa información ya sabemos los datos necesarios para darle la terminación necesaria al proceso.

* kill, ósea que mata un sólo proceso por ID * killall, mata un proceso por el nombre.

También existen diferentes tipos de órdenes que se pueden enviar en ambos comandos para matar los mismos.

 

La señal que enviamos estará determinada por los resultados que deseamos del comando kill. Por ejemplo, se puede enviar HUP (colgar) al comando kill, que efectivamente reiniciará el proceso. Ésta es siempre una buena elección cuando necesita que el proceso se reinicia inmedientaente.

 

También podemos obtener un listado de todas las eñales que se puden enviar al comando kill usando el parámetros -l, aquí encontraremos

 

3.png

 

Lo bueno de ésto es que se puede usar el valor de la señal en lugar del nombre de la eñal. Por lo tanto, no hay que memorizar todos los nombres de las diferentes señales. Entonces usaremos el comando kill para matar la instalacia de Thunar de la siguiente manera:

$ kill SIGNAL PID

Dónde SIGNAL es la señal que se enviará y PID es el ID del proceso que queremos eliminar. Como ya sabemos, por el comando de ps que el ID ue queremos matar es 17107, entonces, para enviar señal de matar escribimos lo siguiente:

$ kill -9 17107

Una vez que escribimos, damos enter y el proceso de Thunar (dicha aplicación) se elimina inmediatamente. Si lo queremos hacer de la manera sencilla, sabemos que el proceso que queremos matar se llama Thunar, entonces podemos hacer uso del comando killall y enviar la misma señal al proceso ásí:

$ killall -9 Thunar

La única advertencia de la órden anterior es que puede no detectar todos los proceso que utiliza Thunar en ése momento. Si, después de ejecutar el comando anterior, usamos nuevamente:

$ ps aux | grep Thunar

Y vemos que se están ejecutando otros procesos relacionados con Thunar, la mejor opción aquí sería volvera escribir kill y enviar la señal 9 para finalizar el proceso por PID.

 

Entonces para finalizar, matar los procesos que no nos sirven o que nos provocan inconvenientes, inestabilidad en nuestro sistema no es tan complicado. Igual la idea es que también miren el man de ps para tener más información y poder hilar más fino.

 

Espero que les haya servido y por favor compartan la información asi sigo creciendo! A

 

brazo de gol mundialista!

Compartir este post


Enlace al post
Compartir en otros sitios

Brillante tutorial, como siempre :ok:

 

Quisiera añadir que aunque los comandos esta perfectamente bien así, si hay que recurrir constantemente a la combinación de "ps ... | grep ..." puede volverse algo incomodo en ciertos casos.

Esto puede solventarse con "pgrep -a nombre_del_proceso", un comando que proviene de solaris pero que está incluido en el sistema GNU/Linux (Al menos en Arch lo está) y básicamente lo que hace es unificar los comandos ps y grep.

También se puede emplear para matar procesos pero escribiendo "pkill -9 nombre_del_proceso" en vez de "pgrep", lo cual permite matar procesos por el nombre, al igual que "killall nombre_del_proceso".

Compartir este post


Enlace al post
Compartir en otros sitios

Genial, muchas gracias, todos los días se aprende algo nuevo. :-)

[N]ation ROM Style WhaT by ice

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión

×