Números de señal de matar Linux

Números de señal de matar Linux
Este tutorial explica qué son las señales de Linux Kill y cómo usarlas para interrumpir, terminar, suspender y continuar procesos.

¿Qué son las señales de Kill Linux??

Las señales de matar permiten la interacción entre diferentes procesos. Las señales concretamente son notificaciones de eventos enviadas a procesos principalmente para interrumpir, terminar, matar o suspender procesos (por eso usamos el término "matar"). Las señales pueden ser enviadas por procesos o por el núcleo, y normalmente se envían cuando una anomalía o condición excepcional requiere un procesamiento especial, o cuando un usuario interrumpe o termina un proceso manualmente (e.gramo., Al presionar Ctrl+C),

Cuando se envía una señal a un proceso, esa señal, o notificación, puede cumplir con una acción predeterminada como respuesta o puede ser manejada por un controlador de señal. Un controlador de señal es un código personalizado del programa cuyo proceso recibió la señal, que define el comportamiento del proceso cuando se recibe la señal (a excepción de las señales Sigkill y Sigstop, que no se pueden manejar, ignorar ni bloquear).

Cuando se envía la señal, las acciones predeterminadas que pueden tener lugar son las siguientes:

  • Término: El proceso finaliza.
  • Encender: La señal se ignora sin afectar el proceso.
  • Centro: Se crea un archivo de núcleo volcado.
  • Detener: El proceso se detiene.
  • Contener: El proceso se reanuda después de ser detenido.

Dependiendo de la señal, algunas de estas acciones pueden tener lugar, el programa también puede contener un controlador de señal para ejecutar la acción adecuada.

Resumido: las señales son mensajes entregados a procesos que les notifican un evento ocurrido.

Señales disponibles:

Para enumerar todos los nombres y números de señal en su sistema, puede usar el comando Kill seguido del indicador -l, como se muestra a continuación.

matar -l

Como puede ver, hay 64 señales, probablemente las más conocidas por todos nosotros es el número 9 (Sigkill) utilizado para terminar los procesos, incluidos los procesos infantiles, inmediatamente.

  • Sigkill (9): La señal Sigkill se usa para matar o terminar los procesos inmediatamente. Las señales de Sigkill no se pueden manejar, ignorar ni detenerse.
  • Sigstop (19): Esta señal es detener o detener los procesos que se pueden reanudar más tarde.
  • Sigcont (18): La señal SigCont se usa para reanudar los procesos detenidos o detenidos.

Cómo usar señales de matar:

La sintaxis correcta para enviar señales es:

matar <-SignalName>

o

matar <-SignalNumber>

Puede reemplazar IR con los nombres o números que obtuvimos anteriormente al ejecutar el comando kill -l. El PID es el ID de proceso que puede aprender utilizando el comando PS como se muestra en las siguientes instrucciones.

Para comenzar la sección práctica de este tutorial, probemos el Sigstop y Sigcont para detener un proceso y luego reanudarlo.
Para el primer ejemplo, creé un pequeño código de código LinuxHintsignal que imprime continuamente "Linuxhint.comunicarse"Como se muestra en la captura de pantalla a continuación.

Para enviar una señal al proceso, antes de que necesite aprender su PID. Para ver la identificación del proceso (PID), debe ejecutar el PD dominio. En mi caso, soy yo quien ejecutó el proceso, así que uso el PD comando seguido de la -u bandera para mostrar mis procesos solamente.

Nota: Para más instrucciones sobre el comando PS, lea usando el comando PS en Linux.

Como puede ver, el PID de la carrera Linuxhintsignal El guión es 16182.

La siguiente captura de pantalla muestra dos terminales; El terminal correcto muestra la entrega de la señal Sigstop para procesar 16182. El terminal izquierdo muestra cómo se detiene el proceso cuando envío la señal.

matar -sigstop

Como puede ver en la terminal correcta, el proceso se detuvo correctamente.

Debe enviar la señal SigCont para reanudar la ejecución del proceso, como se muestra en las capturas de pantalla a continuación.

matar -sigcont

Como puede ver, el proceso se reanudó.

Puede lograr el mismo resultado reemplazando los nombres de señal para sus números. El siguiente ejemplo repite el escenario anterior, pero esta vez está definiendo señales por sus números.

El siguiente ejemplo también muestra cómo se entrega el sigkill para procesar 17721 para pausarlo. Esta vez en lugar de especificar el nombre de la señal, especifico el número de señal devuelto por el matar -l Comando, en este caso, 19 para la señal Sigstop.

matar -19

La siguiente captura de pantalla muestra cómo especificar la señal SigCont, también usando su número en lugar de su nombre.

matar -18

Como puede ver, el resultado es el mismo cuando se usa el nombre o número de la señal.

Como se dijo anteriormente, la señal Sigkill se usa para terminar un proceso completamente; es probablemente la señal más utilizada por los usuarios.

Como puede ver en el siguiente ejemplo, en el que Sigkill se implementa con su número (9), el script fue completamente terminado o asesinado.

matar -9

Otras señales importantes:

  • Firme: Esta señal se entrega cuando el usuario solicita la interrupción del proceso (e.gramo., CTRL+C).
  • Ligero: La señal de Sigterm se entrega para solicitar una terminación del proceso, pero solo para solicitar y no finalizar. Contrariamente a Sigkill o Sigstop, esta señal se puede manejar, bloquear o ignorar.
  • SigiloL: Esta señal se utiliza para terminar los procesos como la causa de un error, como los errores de operación o ejecución. Esta señal no se puede ignorar.
  • Sigchld: Se utiliza para notificar a los procesos de los padres en eventos de procesos infantiles.
  • Suspiro: Esta señal se activa cuando la conexión se interrumpe abruptamente.
  • Siglo: Esta señal se envía a los procesos que intentan escribir en una tubería sin un final de lectura o que no se puede leer.
  • Sigquín: Esta señal es similar a Sigint pero produce un volcado de núcleo.

Conclusión:

El uso de las señales de Linux para matar, detener, pausar procesos, entre otras funciones, es un conocimiento básico que cualquier usuario de Linux debe contener. El conocimiento profundo de las señales es especialmente relevante para los programadores que deben asegurarse de que los manejadores de señales no produzcan efectos no deseados en el sistema. Como puede ver, hay docenas de señales disponibles; Este tutorial solo se centró en los más comunes. Puede obtener más información sobre las señales de Linux en https: // www.ñu.org/Software/libc/manual/html_node/Standard-Signals.html.

Gracias por leer Linux Sugerencia; Sigue siguiéndonos para obtener más consejos y tutoriales de Linux.