8
我有一个bash脚本来挂载和卸载一个设备,它在它们之间执行一些读取操作。由于设备速度非常慢,该脚本需要大约15秒才能完成(安装需要至少5-6秒)。由于安装此设备可能会导致其他问题,因此我不希望此脚本中断。尽管如此,我可以正确处理SIGINT(Ctrl + c),但是当我尝试处理SIGTSTP(Ctrl + z)时,脚本会冻结。这意味着信号被捕获,但处理程序不运行。Bash脚本:无法正确处理SIGTSTP
#!/bin/sh
cleanup()
{
# Don't worry about unmounting yet. Just checking if trap works.
echo "Quitting..." > /dev/tty
exit 0
}
trap 'cleanup' SIGTSTP
...
我手动发送KILL信号到过程。任何想法为什么会发生这种情况,我该如何解决它?
这很有道理。所以这听起来像是除非你用脚本执行的所有二进制文件也按照你的方式处理,否则没有办法正确处理^ z。是对的吗? – Ram
您可以在setsid下异步运行作业并等待它。例如:'setsid cmd&wait'而不是'cmd'。 –
似乎这样做。感谢您的帮助!但只是好奇,这个过程在新的会议中不会停止吗? – Ram