デバイスをマウントおよびアンマウントする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 シグナルを送信する必要があります。なぜこれが起こっているのか、どうすれば修正できるのでしょうか?