Una guía para los comandos Kill, Pkill y Killall para finalizar un proceso en Linux
El sistema operativo Linux viene con el comando kill para finalizar un proceso. El comando hace posible continuar ejecutando el servidor sin la necesidad de reiniciar después de un cambio/actualización importante. Aquí viene el gran poder de Linux y esta es una de las razones por las que Linux se ejecuta en el 90% de los servidores del planeta.

Matar comando envía una señal, una señal específica para ser más perfecto para un proceso. El comando kill se puede ejecutar de varias formas, directamente o desde un script de shell.
El uso del comando kill de/usr/bin le proporciona una característica adicional para matar un proceso por nombre de proceso usando pkill.
La sintaxis común para el comando kill es:
# kill [signal or option] PID(s)
Para un comando kill, un nombre de señal podría ser:
Signal Name Signal Value Behaviour SIGHUP 1 Hangup SIGKILL 9 Kill Signal SIGTERM 15 Terminate
Claramente del comportamiento anterior, SIGTERM es la forma predeterminada y más segura de matar un proceso. SIGHUP es una forma menos segura de matar un proceso como SIGTERM. SIGKILL es la forma más insegura de las tres anteriores para matar un proceso que termina un proceso sin guardar.
Para matar un proceso, necesitamos conocer el ID de proceso de un proceso. Un proceso es una instancia de un programa. Cada vez que se inicia un programa, se genera automáticamente un PID único para ese proceso.
Cada proceso en Linux, tiene un pid. El primer proceso que se inicia cuando se inicia el sistema Linux es el proceso init, por lo que se le asigna un valor de "1" en la mayoría de los casos.
Init es el proceso maestro y no se puede eliminar de esta manera, lo que asegura que el proceso maestro no se elimine accidentalmente. Init decide y permite que lo maten, donde matar es simplemente una solicitud de apagado.
Para conocer todos los procesos y, en consecuencia, su pid asignado, ejecute el siguiente comando ps.
# ps -A
PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 migration/0 6 ? 00:00:00 watchdog/0 7 ? 00:00:01 events/0 8 ? 00:00:00 cgroup 9 ? 00:00:00 khelper 10 ? 00:00:00 netns 11 ? 00:00:00 async/mgr 12 ? 00:00:00 pm 13 ? 00:00:00 sync_supers 14 ? 00:00:00 bdi-default 15 ? 00:00:00 kintegrityd/0 16 ? 00:00:00 kblockd/0 17 ? 00:00:00 kacpid 18 ? 00:00:00 kacpi_notify 19 ? 00:00:00 kacpi_hotplug 20 ? 00:00:00 ata/0 21 ? 00:00:00 ata_aux 22 ? 00:00:00 ksuspend_usbd
¿Qué tal personalizar la salida anterior utilizando la sintaxis como "proceso pidof"?
# pidof mysqld
1684
Otra forma de lograr el objetivo anterior es seguir la siguiente sintaxis.
# ps aux | grep mysqld
root 1582 0.0 0.0 5116 1408 ? S 09:49 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 1684 0.1 0.5 136884 21844 ? Sl 09:49 1:09 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock root 20844 0.0 0.0 4356 740 pts/0 S+ 21:39 0:00 grep mysqld
Antes de dar un paso adelante y ejecutar un comando kill, se deben tener en cuenta algunos puntos importantes:
- A user can kill all his process.
- A user can not kill another user’s process.
- A user can not kill processes System is using.
- A root user can kill System-level-process and the process of any user.
Otra forma de realizar la misma función es ejecutar el comando "pgrep".
# pgrep mysql
3139
Para eliminar el PID del proceso anterior, use el comando kill como se muestra.
kill -9 3139
El comando anterior matará el proceso que tiene pid u003d 3139, donde PID es un valor numérico del proceso.
Otra forma de realizar la misma función, se puede reescribir como.
# kill -SIGTERM 3139
De manera similar, "kill -9 PID" es similar a "kill -SIGKILL PID" y viceversa.
Debe conocer el nombre del proceso, antes de matar e ingresar un nombre de proceso incorrecto puede arruinarlo.
# pkill mysqld
Mata más de un proceso a la vez.
# kill PID1 PID2 PID3 or # kill -9 PID1 PID2 PID3 or # kill -SIGKILL PID1 PID2 PID3
¿Qué pasa si un proceso tiene demasiadas instancias y varios procesos secundarios? Tenemos un comando "killall". Este es el único comando de esta familia, que toma el nombre del proceso como argumento en lugar del número de proceso.
# killall [signal or option] Process Name
Para eliminar todas las instancias de mysql junto con los procesos secundarios, use el comando de la siguiente manera.
# killall mysqld
Siempre puede verificar el estado del proceso si se está ejecutando o no, utilizando cualquiera de los siguientes comandos.
# service mysql status # pgrep mysql # ps -aux | grep mysql
Eso es todo por ahora, de mi parte. Pronto estaré aquí de nuevo con otro tema interesante e informativo. Hasta entonces, estad atentos, conectado a Tecmint y saludable. No olvide dar sus valiosos comentarios en la sección de comentarios.