2017-12-21 32 views
1

이 스크립트입니다, 이름입니다 test.sh트랩이 nohup 명령을 인터럽트하지 않는 이유는 무엇입니까?

#!/bin/bash 
cleanup(){ 
    echo "Caught SIGINT ..." 
    exit 1 

}  
trap 'cleanup' 3 
    while :;do 
     echo "a" 
     sleep 3 
    done 

내가 직접 리눅스 bash는 nohup ./test.sh &를 실행하는 경우, 그것은 잡을 수, PID 신호 -3

을 죽일하지만 스크립트에서 nohup ./test.sh &를 작성하는 경우 그 파일 이름은 go.sh)이며, 나는 go.sh, 다음 test.sh 잡을 수 없습니다를 실행 죽일 -3 PID 신호

을 나는 방법을 쓸 수 있습니다 go.sh 스크립트를 확인하십시오 test.sh catch -3 신호?

+0

신호 '3'은 'SIGQUIT'입니다. 'SIGINT'는'2'입니다. – jm666

답변

1

kill -3 (SIGQUIT)은 작동하지 않습니다. bash는 설명서에 따르면

배쉬가 상호 작용 할 때, 어떤 함정의 부재, 그것은 SIGTERM ( kill 0 있도록 대화 형 쉘을 죽이지 않는) 무시하고 SIGINT가 있도록하는 내장 기다립니다 (적발 및 처리

인터럽트 가능). 모든 경우 bash는 SIGQUIT을 무시합니다. 작업 제어가 적용되면 bash는 SIGTTIN, SIGTTOUSIGTSTP을 무시합니다.