En Unix y los sistemas
operativos tipo Unix, kill
es un
comando utilizado para enviar mensajes sencillos a los
procesos ejecutándose en el sistema.
Por defecto el mensaje que se envía es la
señal de terminación (SIGTERM), que
solicita al proceso limpiar su estado y salir. Pero kill no tiene por
qué tener que ver con matar al proceso. El comando kill
es un
wrapper alrededor de la llamada al
sistema kill()
, que envía
señales a procesos o grupos de
procesos en el sistema, referenciados por
sus IDs de proceso (PIDs) o IDs
de grupo de procesos (PGIDs). kill
se ofrece siempre como programa
independiente, pero la mayoría de las shells
tienen intrínsecamente comandos kill
que pueden diferir levemente de
ella.
Pueden enviarse numerosas señales (vea señal (informática) para la lista completa), aunque las señales en las que los usuarios suelen estar más interesados son SIGTERM y SIGKILL. La señal por defecto es SIGTERM. Los programas que cazan esta señal pueden limpiar su estado (como guardar datos de la configuración a un archivo) antes de terminarse. Para los programas que no capturan esta señal, se utiliza una gestión por defecto. En otras ocasiones, un proceso capaz de capturar la señal puede quedar en un estado que le impide manejarla.
Todas las señales excepto SIGKILL y SIGSTOP pueden ser interceptadas por el proceso, esto es, tener una función especial que es llamada cuando el programa recibe tales señales. Sin embargo, SIGKILL y SIGSTOP solo las ve el kernel, lo que provee formas seguras de controlar la ejecución de los procesos. SIGKILL finaliza el proceso, y SIGSTOP lo pone en pausa hasta que se reciba una señal SIGCONT.
Unix cuenta con mecanismos de seguridad para evitar que usuarios no autorizados puedan finalizar otros procesos. Básicamente, para que un proceso pueda enviar una señal a otro, deben tener el mismo propietario, o ser enviada por el superusuario.
Las señales disponibles tienen distintos nombres, asignados a determinados números. El número de las señales puede cambiar entre distintas implementaciones de Unix. SIGKILL suele tener el número 9 y SIGTERM el 15.
Puede enviarse una señal SIGTERM a un proceso (en este caso con el PID 1234) de tres maneras:
kill 1234
kill -TERM 1234
kill -15 1234
Puede enviarse una señal SIGKILL de dos formas:
kill -KILL 1234
kill -9 1234
Otras señales interesantes son HUP, TRAP, INT y ALRM. Una señal SIGINT puede generarse simplemente presionando CTRL+C en la mayoría de las shells. También es común que CTRL+Z esté mapeada a SIGTSTP y CTRL+\ (backslash) a SIGQUIT, que puede forzar un programa a generar un volcado de memoria.
killall xmms
, lo que
eliminaría todos los procesos de un
ejecutable llamado xmms
.Microsoft Windows tiene el comando
taskkill1
para finalizar procesos. También se soporta kill
mediante
Cygwin o Microsoft Windows Services for
UNIX (WSU).
Fuente original: kill. Compartido con Licencia Creative Commons Attribution-ShareAlike 3.0
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page