我有一个安装和卸载设备的 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 信号。知道为什么会发生这种情况以及如何解决吗?