En informática , kill
es un comando que se utiliza en varios sistemas operativos populares para enviar señales a los procesos en ejecución .
Autor (es) original (es) | Laboratorios AT&T Bell |
---|---|
Desarrollador (es) | Varios desarrolladores comerciales y de código abierto |
Versión inicial | Febrero de 1973 |
Sistema operativo | Unix , similar a Unix , Plan 9 , Inferno , OS-9 , Windows , ReactOS , Singularity , IBM i |
Plataforma | Multiplataforma |
Tipo | Mando |
Implementaciones
Unix y similar a Unix
En Unix y Unix-como sistemas operativos, kill
es un comando utilizado para enviar una señal a un proceso. Por defecto, el mensaje enviado es la señal de terminación , que solicita que el proceso salga . Pero matar es un nombre poco apropiado; la señal enviada puede no tener nada que ver con la eliminación del proceso. El kill
comando es un envoltorio alrededor de la llamada al sistema , que envía señales a procesos o grupos de procesos en el sistema, referenciados por sus ID numéricos de proceso (PID) o ID de grupo de proceso (PGID). siempre se proporciona como una utilidad independiente según lo definido por el estándar POSIX . Sin embargo, la mayoría de los shells tienen comandos incorporados que pueden diferir ligeramente de él. [1] [2]kill()
kill
kill
Hay muchas señales diferentes que se pueden enviar (ver señal para una lista completa), aunque las señales en las que los usuarios están más interesados en general son SIGTERM ("terminar") y SIGKILL ("matar"). La señal enviada por defecto es SIGTERM. Los programas que manejan esta señal pueden realizar útiles operaciones de limpieza (como guardar información de configuración en un archivo) antes de salir. Sin embargo, muchos programas no implementan un manejador especial para esta señal, por lo que en su lugar se llama a un manejador de señal predeterminado. Otras veces, incluso un proceso que tiene un controlador especial ha salido mal de una manera que le impide manejar correctamente la señal.
Todas las señales excepto SIGKILL y SIGSTOP ("detener") pueden ser "interceptadas" por el proceso, lo que significa que se puede llamar a una función especial cuando el programa recibe esas señales. Las dos excepciones SIGKILL y SIGSTOP solo son detectadas por el kernel del sistema host , lo que proporciona formas fiables de controlar la ejecución de los procesos. SIGKILL mata el proceso y SIGSTOP lo pausa hasta que se recibe un SIGCONT ("continuar"). [3]
Unix proporciona mecanismos de seguridad para evitar que usuarios no autorizados eliminen otros procesos. Básicamente, para que un proceso envíe una señal a otro, el propietario del proceso de señalización debe ser el mismo que el propietario del proceso de recepción o ser el superusuario .
Todas las señales disponibles tienen nombres diferentes y se asignan a ciertos números. Es importante señalar que el mapeo específico entre números y señales puede variar entre implementaciones de Unix. SIGTERM suele tener el número 15, mientras que SIGKILL suele tener el número 9.
Ejemplos de
A un proceso se le puede enviar una señal SIGTERM de cuatro formas (el ID de proceso es '1234' en este caso):
kill 1234 kill -s TERM 1234 kill -TERM 1234 kill -15 1234
Al proceso se le puede enviar una señal SIGKILL de tres formas:
matar -s MATAR 1234 matar -KILL 1234 matar -9 1234
Otras señales útiles incluyen HUP, TRAP, INT, SEGV y ALRM. HUP envía la señal SIGHUP . Algunos demonios, incluidos Apache y Sendmail , vuelven a leer los archivos de configuración al recibir SIGHUP, por lo que el comando kill también se puede usar para esto. Una señal SIGINT se puede generar de manera muy simple presionando CTRL+C en la mayoría de los shells de Unix . También es común que CTRL+Z se asigne a SIGTSTP ("terminal stop") y que CTRL+\ (barra invertida) se asigne a SIGQUIT , lo que puede obligar a un programa a realizar un volcado de memoria .
Programas relacionados
- killall : en algunas variaciones de Unix, como Solaris , esta utilidad se invoca automáticamente cuando el sistema se apaga . Se comporta de manera muy similar al comando kill anterior, pero en lugar de enviar una señal a un proceso individual, la señal se envía a todos los procesos del sistema. Sin embargo, en otros como IRIX , Linux y FreeBSD , se proporciona un argumento que especifica el nombre del proceso (o procesos) a matar. Por ejemplo, para matar un proceso como una instancia del reproductor de música XMMS invocado por
xmms
, el usuario ejecutaría el comandokillall xmms
. Esto mataría todos los procesos nombradosxmms
y es equivalente akill `pidof xmms`
en sistemas como Solaris. - pkill : procesos de señales basados en el nombre y otros atributos. Se introdujo en Solaris 7 y desde entonces se ha vuelto a implementar para Linux, NetBSD y OpenBSD . pkill hace que matar procesos basados en su nombre sea mucho más conveniente: por ejemplo, para matar un proceso llamado firefox sin pkill (y sin pgrep ), uno tendría que escribir
kill `ps --no-headers -C firefox -o pid`
mientras que con pkill, simplemente se puede escribirpkill firefox
. - xkill : si se llama sin ningún parámetro, el cursor del mouse cambia de una flecha a un icono "x", y el usuario puede hacer clic en una ventana para forzar al servidor X a cerrar la conexión con el cliente propietario de la ventana. Esto a menudo hace que el proceso finalice cuando detecta que su conexión con el servidor X se ha cerrado.
Microware OS-9
El kill
comando también está disponible como un shell incorporado en el shell de OS-9 . Se utiliza para matar otro proceso por ID de proceso. [4]
Ejemplo
Detenga el proceso con el ID de proceso "7":
$ matar 7
Microsoft Windows y ReactOS
En el intérprete de línea de comandos de Microsoft, Windows PowerShell , kill
hay un alias de comando predefinido para el Stop-Process
cmdlet .
Microsoft Windows XP , Vista y 7 incluyen el comando taskkill
[5] para finalizar procesos. La sintaxis habitual de este comando es taskkill /im "IMAGENAME"
. Se kill
incluyó una versión "no compatible" en varias versiones de los kits de recursos de Microsoft Windows disponibles para Windows 98. [6]
Las versiones GNU de kill
se han portado a través de Cygwin y se ejecutan dentro del subsistema de entorno Unix que proporciona Microsoft Windows Services para UNIX (Microsoft adquirió Windows Services para Unix al por mayor mediante la compra de Softway Systems y su producto Interix el 17 de septiembre de 1999). [7]
La implementación de ReactOS se basa en la variante de Windows. Fue desarrollado por Andrew Riedi, Andrew Nguyen y He Yang. Tiene licencia de GPLv2.1 o posterior. [8]
Ejemplos de
Busque todos los procesos que comiencen con la letra "p" que fueron desarrollados por Microsoft y utilicen más de 10 MB de memoria y elimínelos:
PS C: \> ps p * | donde { $ _ . Empresa -como "Microsoft *" -y $ _ . WorkingSet -gt 10MB } | matar -confirmarConfirmar ¿Está seguro de que desea realizar esta acción? Realización de la operación "Stop-Process" en Target "powershell (6832)". [Y] Sí [A] Sí a todo [N] No [L] No a todo [S] Suspender [?] Ayuda (la opción predeterminada es "Y"): A PS C: \>
Aquí hay un ejemplo más simple, que solicita al proceso Explorer.exe que finalice:
PS C: \> taskkill / im explorer . exe
Este ejemplo fuerza al proceso a terminar:
PS C: \> taskkill / f / im explorer . exe
Los procesos también se pueden matar por su número PID :
PS C: \> taskkill / pid 3476
Singularidad de Microsoft
Singularidad concha , la concha estándar de Microsoft Research 's microkernel sistema operativo singularidad incluye un kill
comando para interrumpir procesos en segundo plano.
Ejemplos de
Detenga el proceso con el nombre "SampleProcess":
Singularidad> matar SampleProcess
Detenga el proceso con el identificador de proceso "42":
Singularidad> matar 42
Plan 9 de Bell Labs
Bajo el Plan 9 de Bell Labs , el programa kill no realiza esta terminación, ni toma ID de proceso. Más bien, toma los nombres reales de los procesos y genera los comandos para rc , el shell utilizado por Plan 9, para matar el proceso. [9]
Se llama a un comando similar proporcionado slay
, que hace lo mismo pero para procesos que se niegan a ser eliminados de esta manera. [9]
Ejemplos de
Por ejemplo, para matar todas las instancias de troff , uno escribe:
matar a troff | rc
Otros
El comando kill también se ha adaptado al sistema operativo IBM i . [10]
Ver también
- Señal
- xkill
- Mátalos a todos
- pkill
- señal.h
Referencias
- ^ "Bash Reference Manual: Job Control Builtins" . El Proyecto GNU . Consultado el 24 de febrero de 2015 .
- ^ "zsh: 17. Comandos integrados de Shell" . Consultado el 24 de febrero de 2015 .
- ^ ""ñal.h> . The Open Group Base Especificaciones Edición 7 . Consultado el 24 de febrero de 2015 .
- ^ Paul S. Dayan (1992). The OS-9 Guru - 1: Los hechos . Galáctica Industrial Limited. ISBN 0-9519228-0-7.
- ^ "Taskkill" . Microsoft TechNet . Consultado el 24 de febrero de 2015 .
- ^ "Utilidades del kit de recursos - Kit de recursos de Windows 98" . Software ActiveXperts . Consultado el 24 de febrero de 2015 .
- ^ "Utilidades GNU para Win32" . Archivado desde el original el 9 de febrero de 2006 . Consultado el 24 de febrero de 2015 .
- ^ reactos / taskkill.c en master · reactos / reactos · GitHub
- ^ a b "Traducción de comandos de UNIX a Plan 9" . Plan 9 wiki . Archivado desde el original el 5 de septiembre de 2008 . Consultado el 24 de febrero de 2015 .
- ^ IBM . "IBM System i Versión 7.2 Programación Qshell" (PDF) . Consultado el 5 de septiembre de 2020 .
Otras lecturas
- McElhearn, Kirk (2006). La línea de comandos de Mac OS X: Unix Under the Hood . John Wiley e hijos . ISBN 978-0470113851.
enlaces externos
- Comando: - Referencia de comandos y utilidades, la especificación única de UNIX , número 7 de The Open Group
- Llamada al sistema: - Referencia de interfaces del sistema, la especificación única de UNIX , número 7 de The Open Group
- - Manual del programador de Plan 9 , Volumen 1
- - Manual de comandos generales de Inferno
- - Manual de comandos de usuario de Linux