Me sorprendió este comentario en otra pregunta:
Enviar dd la señal USR1 demasiado pronto después de que haya comenzado (es decir, en un script bash, la línea después de que la haya iniciado), de hecho, la terminará
¿Alguien puede explicar por qué ?
Me sorprendió este comentario en otra pregunta:
Enviar dd la señal USR1 demasiado pronto después de que haya comenzado (es decir, en un script bash, la línea después de que la haya iniciado), de hecho, la terminará
¿Alguien puede explicar por qué ?
Respuestas:
Cada señal tiene una "disposición predeterminada": lo que hace un proceso por defecto cuando recibe esa señal. Hay una tabla en la signal(7)página del manual que los enumera:
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
...
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGUSR1y SIGUSR2ambos tienen la acción predeterminada Term: el proceso finaliza. ddregistra un controlador para interceptar la señal y hacer algo útil con ella, pero si señaliza demasiado rápido aún no ha tenido tiempo de registrar ese controlador, por lo que la acción predeterminada ocurre en su lugar
stracesalida en un script de shell ...)
{ dd if=/dev/zero of=/dev/null & }; kill -USR1 $!; jobs; sleep 1; jobspara reproducir el efecto que estás describiendo.