![$$ 특수 변수에서 얻은 PID를 사용하여 쉘을 종료할 수 없는 이유는 무엇입니까? [복사]](https://linux55.com/image/61204/%24%24%20%ED%8A%B9%EC%88%98%20%EB%B3%80%EC%88%98%EC%97%90%EC%84%9C%20%EC%96%BB%EC%9D%80%20PID%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%89%98%EC%9D%84%20%EC%A2%85%EB%A3%8C%ED%95%A0%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
$$
특수 변수가 쉘의 프로세스 번호를 보유하고 있다는 것을 알게 된 후 간단히 쉘을 종료하려고 시도했지만 kill <pid obtained by echo $$>
작동하지 않았습니다. 또한 몇 가지 변형을 시도했지만 효과가 없었습니다.
답변1
Bash 매뉴얼을 확인하세요:
Bash가 대화형일 때 트랩 없이 SIGTERM을 무시합니다.
https://www.gnu.org/software/bash/manual/bashref.html#Signals
kill
도움말 텍스트를 확인하세요 ( help kill
bash 프롬프트에서):
SIGSPEC와 SIGNUM이 모두 없으면 SIGTERM으로 간주됩니다.
https://www.gnu.org/software/bash/manual/bashref.html#index-kill
답변2
당신은 할 수 있지만, 그것이 필요한지 절대적으로 확신하지 않는 한 껍질은 죽지 않으려고 노력할 것입니다.
SIGHUP이 작동합니다(SIGKILL과 동일). 다음을 시도해 볼 수 있습니다.
kill -HUP $$
( 원하는 경우 HUP
이를 숫자 신호 식별자로 바꿀 수 있습니다 1
.)
이것이 작동하는 이유 SIGHUP
는 모뎀의 직렬 회선 연결이 종료될 때(예: 전화선이 끊어지는 경우) 전송되는 신호이기 때문입니다.