systemd는 kill -9에서 어떻게 살아남나요?

systemd는 kill -9에서 어떻게 살아남나요?

최근 "'kill -9 0'으로 인해 콘솔 세션이 종료되는 이유"와 "커널 패닉을 유발하는 방법"이라는 질문 사이에서 나는 안장 아래에서 바늘을 잡고 kill -9 1최근 Arch Linux 노트북에서 차세대 Linux를 실행했습니다. 에. 나는 사용자 ID "root"로 이 작업을 수행하고 있습니다.

일종의 충돌, 패닉, 시스템 종료를 충분히 예상했지만 아무 일도 일어나지 않았습니다. 나는 kill -9 1그것을 다시 했지만 아무 소용이 없었다.

systemd이제 Arch Linux 시스템이 모두 실행 중입니다. systemdkill -9에서 살아남는 방법은 무엇입니까? Linux 3.7 커널에는 특별한 경우의 코드가 있을 것으로 예상하지만, 아마도 제가 생각하지 못한 다른 이유가 있을 수도 있습니다.

PID 1로 실행되는 다른 것들은 어떻습니까? 저는 Slackware가 여전히 이를 사용하고 있다고 생각 init하지만, 제 프로덕션 Slackware 서버에서 사용해 보기는 두렵습니다. 내 무선 라우터의 DD-WRT는 일종의 /sbin/init를 실행합니다.

답변1

에서 man 2 kill:

프로세스 ID 1(즉, init 프로세스)로 보낼 수 있는 유일한 신호는 init에 명시적인 신호 처리기가 설치된 신호입니다. 이는 시스템이 예기치 않게 충돌하지 않도록 하기 위해 수행됩니다.

즉, 수신하는 동안(종료 포함) init원하는 모든 작업을 수행 할 수 있지만 SIGKILLsystemd의 init는 이에 대한 신호 처리기를 설치하지 않으므로 아무 일도 일어나지 않습니다.

관련 정보