Скрипт Bash: не может правильно обрабатывать SIGTSTP
У меня есть скрипт bash, который монтирует и размонтирует устройство, которое выполняет некоторые операции чтения между ними. Поскольку устройство работает очень медленно, выполнение сценария занимает около 15 секунд (монтирование занимает не менее 5-6 секунд). Поскольку оставление подключенного устройства может вызвать другие проблемы, я не хочу, чтобы этот сценарий прерывался.
Сказав это, я могу правильно обработать SIGINT (Ctrl + c), но когда я пытаюсь обработать SIGTSTP (Ctrl + z), скрипт зависает. Это означает, что сигнал захвачен, но обработчик не работает.
#!/bin/sh
cleanup()
{
# Don't worry about unmounting yet. Just checking if trap works.
echo "Quitting..." > /dev/tty
exit 0
}
trap 'cleanup' SIGTSTP
...
Я вручную должен отправить сигнал KILL процессу. Есть идеи, почему это происходит и как я могу это исправить?