$$ 특수 변수에서 얻은 PID를 사용하여 쉘을 종료할 수 없는 이유는 무엇입니까? [복사]

$$ 특수 변수에서 얻은 PID를 사용하여 쉘을 종료할 수 없는 이유는 무엇입니까? [복사]

$$특수 변수가 쉘의 프로세스 번호를 보유하고 있다는 것을 알게 된 후 간단히 쉘을 종료하려고 시도했지만 kill <pid obtained by echo $$>작동하지 않았습니다. 또한 몇 가지 변형을 시도했지만 효과가 없었습니다. 여기에 이미지 설명을 입력하세요.

답변1

Bash 매뉴얼을 확인하세요:

Bash가 대화형일 때 트랩 없이 SIGTERM을 무시합니다.

https://www.gnu.org/software/bash/manual/bashref.html#Signals

kill도움말 텍스트를 확인하세요 ( help killbash 프롬프트에서):

SIGSPEC와 SIGNUM이 모두 없으면 SIGTERM으로 간주됩니다.

https://www.gnu.org/software/bash/manual/bashref.html#index-kill

답변2

당신은 할 수 있지만, 그것이 필요한지 절대적으로 확신하지 않는 한 껍질은 죽지 않으려고 노력할 것입니다.

SIGHUP이 작동합니다(SIGKILL과 동일). 다음을 시도해 볼 수 있습니다.

kill -HUP $$

( 원하는 경우 HUP이를 숫자 신호 식별자로 바꿀 수 있습니다 1.)

이것이 작동하는 이유 SIGHUP는 모뎀의 직렬 회선 연결이 종료될 때(예: 전화선이 끊어지는 경우) 전송되는 신호이기 때문입니다.

관련 정보