A veces, mientras trabaja en una máquina Linux, verá que una aplicación o un proceso de línea de comandos se atasca (no responde). Entonces en esos casos, terminarlo es la única salida. La línea de comandos de Linux ofrece una utilidad que puede usar en estos escenarios. Se llama matar .
En este tutorial, discutiremos los conceptos básicos de matar usando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos del artículo se probaron en una máquina con Ubuntu 16.04.
Comando de eliminación de Linux
El comando kill generalmente se usa para matar un proceso. Internamente envía una señal, y dependiendo de lo que quieras hacer, hay diferentes señales que puedes enviar usando esta herramienta. La siguiente es la sintaxis del comando:
kill [options] <pid> [...]
Y así es como la página de manual de la herramienta lo describe:
The default signal for kill is TERM. Use -l or -L to list available signals. Particularly useful
signals include HUP, INT, KILL, STOP, CONT, and 0. Alternate signals may be specified in three ways:
-9, -SIGKILL or -KILL. Negative PID values may be used to choose whole process groups; see the PGID
column in ps command output. A PID of -1 is special; it indicates all processes except the kill
process itself and init.
Los siguientes ejemplos con estilo de preguntas y respuestas le darán una mejor idea de cómo funciona el comando de eliminación.
P1. ¿Cómo terminar un proceso usando el comando kill?
Esto es muy fácil:todo lo que necesita hacer es obtener el pid del proceso que desea eliminar y luego pasarlo al comando de eliminación.
kill [pid]
Por ejemplo, quería eliminar el proceso 'gthumb' en mi sistema. Entonces, primero usé el comando ps para obtener el pid de la aplicación y luego lo pasé al comando kill para terminarlo. Aquí está la captura de pantalla que muestra todo esto:
P2. ¿Cómo enviar una señal personalizada?
Como ya se mencionó en la sección de introducción, TERM es la señal predeterminada que kill envía a la aplicación/proceso en cuestión. Sin embargo, si lo desea, puede enviar cualquier otra señal que elimine los soportes usando la -s opción de línea de comando.
kill -s [signal] [pid]
Por ejemplo, si un proceso no responde a la señal TERM (que permite que el proceso realice una limpieza final antes de salir), puede optar por la señal KILL (que no permite que el proceso realice ninguna limpieza). El siguiente es el comando que debe ejecutar en ese caso.
kill -s KILL [pid]
P3. ¿Qué señales puedes enviar usando kill?
Por supuesto, la siguiente pregunta lógica que te vendrá a la mente es cómo saber qué señales puedes enviar usando kill. Bueno, afortunadamente, existe una opción de línea de comando -l que enumera todas las señales admitidas.
kill -l
El siguiente es el resultado del comando anterior producido en nuestro sistema:
P4. ¿Cuáles son las otras formas en que se puede enviar la señal?
En uno de los ejemplos anteriores, te dijimos que si quieres enviar la señal KILL, puedes hacerlo de la siguiente manera:
kill -s KILL [pid]
Sin embargo, también hay un par de otras alternativas:
kill -s SIGKILL [pid]
kill -s 9 [pid]
El número correspondiente se puede saber usando la opción -l que ya hemos discutido en el ejemplo anterior.
P5. ¿Cómo eliminar todos los procesos en ejecución de una sola vez?
En caso de que un usuario quiera eliminar todos los procesos que pueda (esto depende de su nivel de privilegio), en lugar de especificar una gran cantidad de ID de procesos, simplemente puede pasar la opción -1 para eliminar.
Por ejemplo:
kill -s KILL -1
Conclusión
El comando matar es bastante sencillo de entender y usar. Hay una ligera curva de aprendizaje en términos de la lista de opciones de señal que ofrece, pero como explicamos aquí, también hay una opción para echar un vistazo rápido a esa lista. Simplemente practique lo que hayamos discutido y debería estar listo para comenzar. Para obtener más información, diríjase a la página de manual de la herramienta.