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