¿Qué hace -HUP cuando se usa con killall?

16

A veces, cuando ejecuto un killallcomando desde la Terminal, un compañero de trabajo sugiere o edita mis scripts para mostrar killall -HUP.

¿Qué hace la -HUPparte?

Danijel-James W
fuente
Aquí está la página de manual de Apple para killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… parece h = help, u = user y p = process. Pero esos son todos minúsculas. No veo los parámetros en mayúsculas en la página del manual, pero las mayúsculas pueden tener significados completamente diferentes, o pueden no existir ...
David DelMonte

Respuestas:

21

La -HUPopción es la señal que el killallcomando envía a los procesos . Puede ser un poco difícil de decir, pero la entrada relevante en el killallmanual es:

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

La diferencia entre la TERMseñal predeterminada que killallenvía y la HUPseñal depende en gran medida del programa al que envía la señal. Al final del programa, reciben un valor de señal de interrupción diferente. Por lo tanto, el programa puede detectar las interrupciones y decidir, en función del valor, si deben hacer una cosa u otra.

La TERMseñal (históricamente la "señal de terminación") generalmente se envía a un programa para solicitar su terminación (que es una versión más estricta de forzar su terminación con la KILLseñal). El programa es libre de atrapar e ignorar la TERMseñal. No tiene que terminar si no quiere y puede ignorar por completo esta señal.

La HUPseñal (históricamente la "señal de bloqueo") generalmente se envía a un programa para solicitar que se reinicie y vuelva a leer toda su configuración en el proceso. El comportamiento real del programa depende de la implementación específica del programa. No todos los programas se capturan HUPy no se requieren por convención o dogma. Por ejemplo, el servidor web Apache captará una HUPseñal y volverá a leer todos sus archivos de configuración, pero no reiniciará ningún proceso.

Si realmente desea terminar los procesos y no preocuparse de si van a atrapar y obedecer, la señal usa la KILLseñal. No puede ser atrapado o ignorado y da como resultado la finalización del proceso.

Para una buena revisión de las señales POSIX disponibles, consulte este artículo de Wikipedia .

Ian C.
fuente
2
En la parte inferior de la página de manual de killall, en la sección VER TAMBIÉN, hay un enlace a la página de manual de kill que enumera algunas señales y lo que hacen.
Ian C.
Soy una de esas #FAILpersonas que nunca leen más allá de los interruptores. ¡Gracias!
Danijel-James W
Como una "señal de suspensión", HUP generalmente se envía a un programa cuando el usuario cierra la sesión o finaliza el shell que inició el programa. Si el programa no implementa la captura de la señal, el programa generalmente terminará. Como se señaló anteriormente, el programa que recibe la señal puede implementar cualquier actividad deseada como resultado de captar la señal, como se indica en el ejemplo de Apache.
nachbar
2

Esta -HUPes la señal de "colgar" que puede hacer que una aplicación cese, lea su archivo de configuración y luego comience nuevamente. No es necesariamente mejor que usarlo sin él.

killall Finder

y

killall -HUP Finder

Son respetuosamente lo mismo. En OS X Finder se reiniciará, pero volverá a leer su archivo de configuración. Esto podría no ser realmente el caso si la aplicación que se está ejecutando no tiene la -HUPfunción integrada. Como el cartel anterior mencionaba a Apache. Lee sus archivos de configuración, pero no puede iniciarse nuevamente.

Tech29
fuente