matar (comando)

Comando en varios sistemas operativos para finalizar un proceso
matar
Autor(es) original(es)Laboratorios Bell de AT&T
Desarrollador(es)Varios desarrolladores comerciales y de código abierto
Lanzamiento inicialFebrero de 1973 ; hace 51 años ( 1973-02 )
Sistema operativoUnix , similar a Unix , Plan 9 , Inferno , OS-9 , Windows , ReactOS , Singularity , IBM i
PlataformaMultiplataforma
TipoDominio
LicenciaReactOS: LGPL-2.1 o posterior

En informática , killes un comando que se utiliza en varios sistemas operativos populares para enviar señales a los procesos en ejecución .

Implementaciones

Unix y similares

En sistemas operativos Unix y similareskill , es un comando que se utiliza para enviar una señal a un proceso. De forma predeterminada, el mensaje enviado es la señal de terminación , que solicita que el proceso salga . Pero kill es un nombre poco apropiado; la señal enviada puede no tener nada que ver con la terminación del proceso. El killcomando es un contenedor de la llamada del sistema , que envía señales a los procesos o grupos de procesos en el sistema, a los que se hace referencia por sus identificadores de proceso numéricos (PID) o identificadores de grupo de procesos (PGID). siempre se proporciona como una utilidad independiente según lo define el estándar POSIX . Sin embargo, la mayoría de los shells tienen comandos integrados que pueden diferir ligeramente de él. [1] [2]kill() kill kill

Existen muchas señales diferentes que se pueden enviar (consulte la sección de señales para obtener una lista completa), aunque las señales en las que los usuarios están generalmente más interesados ​​son SIGTERM ("terminar") y SIGKILL ("matar"). La señal predeterminada que se envía es SIGTERM. Los programas que manejan esta señal pueden realizar operaciones de limpieza útiles (como guardar información de configuración en un archivo) antes de salir. Sin embargo, muchos programas no implementan un controlador especial para esta señal, por lo que se llama en su lugar a un controlador de señal predeterminado. Otras veces, incluso un proceso que tiene un controlador especial ha fallado de una manera que le impide manejar correctamente la señal.

Todas las señales excepto SIGKILL y SIGSTOP ("stop") 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 las ve el núcleo del sistema host, lo que proporciona formas confiables de controlar la ejecución de procesos. SIGKILL mata el proceso y SIGSTOP lo pausa hasta que se recibe un SIGCONT ("continue"). [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 que envía la señal debe ser el mismo que el propietario del proceso que la recibe o ser el superusuario .

Las señales disponibles tienen nombres diferentes y se asignan a determinados números. La asignación específica 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

Se puede enviar una señal SIGTERM a un proceso de cuatro maneras (el ID del proceso es '1234' en este caso):

matar 1234 matar -s TÉRMINO 1234 matar -TÉRMINO 1234 matar -15 1234        

Se puede enviar al proceso una señal SIGKILL de tres maneras:

matar  -s  MATAR 1234 matar -MATAR 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 también se puede utilizar el comando kill para esto. Se puede generar una señal SIGINT de forma muy sencilla presionando CTRL+C en la mayoría de los shells de Unix . También es común que + se asigne a SIGTSTP ("terminal stop") y que + (barra invertida) se asigne a SIGQUIT , lo que puede obligar a un programa a realizar un volcado de memoria .CTRLZCTRL\

  • killall - en algunas variantes de Unix, como Solaris , esta utilidad se invoca automáticamente cuando el sistema se apaga . Se comporta de forma 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) que se van a matar. Por ejemplo, para matar un proceso como una instancia del reproductor de música XMMSxmms invocado por , el usuario ejecutaría el comando killall xmms. Esto mataría todos los procesos nombrados xmmsy es equivalente a kill `pidof xmms`en sistemas como Solaris.
  • pkill - señala procesos basándose en el nombre y otros atributos. Fue introducido en Solaris 7 y desde entonces ha sido reimplementado para Linux, NetBSD y OpenBSD . pkill hace que matar procesos basándose 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, uno puede simplemente escribir pkill firefox.
  • xkill : si se llama sin ningún parámetro, el cursor del ratón cambia de una flecha a un icono con forma de "x" y el usuario puede hacer clic en una ventana para obligar al servidor X a cerrar la conexión con el cliente propietario de la ventana. Esto suele provocar que el proceso finalice cuando detecta que se ha cerrado su conexión con el servidor X.

Sistema operativo microsoft-9

El killcomando también está disponible como un comando integrado en el shell de OS-9 . Se utiliza para matar otro proceso por ID de proceso. [4]

Detener el proceso con el ID de proceso "7":

$ matar 7

Microsoft Windows y ReactOS

El taskkillcomando en Microsoft Windows

En el intérprete de línea de comandos de Microsoft , Windows PowerShell , killes 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 . Se incluyó taskkill /im "IMAGENAME"una versión "no compatible" de en varias versiones de los kits de recursos de Microsoft Windows disponibles para Windows 98. [6]kill

Las versiones GNU de killhan sido portadas 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 a través de su compra de Softway Systems y su producto Interix el 17 de septiembre de 1999). [7]

El taskkillcomando en ReactOS

La implementación de ReactOS se basa en la variante de Windows. Fue desarrollada por Andrew Riedi, Andrew Nguyen y He Yang. Tiene licencia LGPLv2.1 o posterior. [8]

Ejemplos

Encuentre todos los procesos que comienzan con la letra "p" que fueron desarrollados por Microsoft y usan más de 10 MB de memoria y elimínelos:

PS C:\> ps p *  |  donde {  $_ . Empresa  -como  "Microsoft*"  -y  $_ . Conjunto de trabajo  -gt  10 MB  }  |  kill -confirmConfirmar ¿Está seguro de que desea realizar esta acción? Se está realizando la operación "Detener proceso" en el destino "powershell (6832)". [Y] Sí [A] Sí a todo [N] No [L] No a todo [S] Suspender [?] Ayuda (el valor predeterminado es "Y"): A PS C:\>

He aquí un ejemplo más simple, que solicita al proceso Explorer.exe que finalice:

PS C : \ > taskkill  / im  explorer.exe

Este ejemplo fuerza la finalización del proceso:

PS C : \ > taskkill  / f  / imexplorer.exe 

Los procesos también pueden eliminarse por su número PID :

PS C:\> taskkill  / pid  3476

Singularidad de Microsoft

Singularity Shell , el shell estándar para el sistema operativo de microkernel de Microsoft Research , incluye un comando para finalizar los procesos en segundo plano.kill

Ejemplos

Detener el proceso con el nombre "SampleProcess":

Singularidad>matar SampleProcess

Detener el proceso con el identificador de proceso "42":

Singularidad>matar 42

Plan 9 de Bell Labs

En el caso de Plan 9 de Bell Labs , el programa kill no realiza realmente esta terminación ni toma los identificadores de los procesos, sino que 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 proporciona un comando similar llamado slay, que hace lo mismo pero para los procesos que se niegan a ser eliminados de esta manera. [9]

Ejemplos

Por ejemplo, para matar todas las instancias de troff , se escribe:

matar a troff | rc

Otros

El comando kill también ha sido portado al sistema operativo IBM i . [10]

Véase también

Referencias

  1. ^ "Bash Reference Manual: Job Control Builtins" (Manual de referencia de Bash: funciones integradas de control de tareas). The GNU Project . Consultado el 24 de febrero de 2015 .
  2. ^ "zsh: 17. Comandos integrados del shell" . Consultado el 24 de febrero de 2015 .
  3. ^ "<signal.h>". Especificaciones básicas de The Open Group, número 7. Consultado el 24 de febrero de 2015 .
  4. ^ Paul S. Dayan (1992). El gurú del OS-9 - 1: Los hechos . Galactic Industrial Limited. ISBN 0-9519228-0-7.
  5. ^ "Taskkill". Microsoft TechNet . Consultado el 24 de febrero de 2015 .
  6. ^ "Utilidades del kit de recursos - Kit de recursos de Windows '98". Software ActiveXperts . Archivado desde el original el 25 de mayo de 2019. Consultado el 24 de febrero de 2015 .
  7. ^ "Utilidades GNU para Win32". Archivado desde el original el 9 de febrero de 2006. Consultado el 24 de febrero de 2015 .
  8. ^ reactos/taskkill.c en master · reactos/reactos · GitHub
  9. ^ ab "Traducción de comandos de UNIX a Plan 9". Wiki de Plan 9. Archivado desde el original el 5 de septiembre de 2008. Consultado el 24 de febrero de 2015 .
  10. ^ IBM . "Programación Qshell para IBM System i versión 7.2" (PDF) . IBM . Consultado el 5 de septiembre de 2020 .

Lectura adicional

Obtenido de "https://es.wikipedia.org/w/index.php?title=Kill_(comando)&oldid=1234038717"