몇 가지 읽기 작업을 수행하는 장치를 마운트 및 마운트 해제하는 bash 스크립트가 있습니다. 장치가 매우 느리기 때문에 스크립트를 완료하는 데 약 15 초 (적어도 5-6 초 소요)가 소요됩니다. 이 장치를 마운트 된 상태로두면 다른 문제가 발생할 수 있으므로이 스크립트를 중단하지 마십시오.Bash 스크립트 : SIGTSTP를 올바르게 처리 할 수 없음
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 신호를 처리해야합니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있습니까?
그렇게 많은 의미가 있습니다. 따라서 스크립트로 실행하는 모든 바이너리가^z를 처리하지 않으면^z를 적절하게 처리 할 수있는 방법이 없습니다. 그게 맞습니까? – Ram
setsid에서 비동기 적으로 작업을 실행하고 기다릴 수 있습니다. 예 :'cmd' 대신에'setsid cmd & wait'. –
그렇게 보입니다. 도와 주셔서 감사합니다! 그러나 궁금한 점이 있더라도 새로운 세션에서 프로세스가 중단되지는 않습니까? – Ram