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é ?
{ dd if=/dev/zero of=/dev/null & }; kill -USR1 $!; jobs; sleep 1; jobs
para reproducir el efecto que estás describiendo.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:SIGUSR1
ySIGUSR2
ambos tienen la acción predeterminadaTerm
: el proceso finaliza.dd
registra 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 lugarfuente
strace
salida en un script de shell ...)