Я пытаюсь поймать сигнал SIGUSR1
в bash script, который спят через команду sleep
:
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
Ловушка сигнала работает, но эхо-сообщение не отображается, пока не закончится sleep 10
.
По-видимому, обработка сигнала bash ожидает завершения текущей команды до обработки сигнала.
Есть ли способ прервать запущенную команду sleep
, как только она получит сигнал, так же, как программа C прервет функцию libc sleep()
?