systemd는 kill -9에서 어떻게 살아남습니까?


28

최근 " 'kill -9 0'이 (가) 콘솔 세션을 종료하는 이유"와 "커널 패닉을 얻는 방법"질문 사이에, 나는 안장 아래에 버를 가지고 kill -9 1대부분의 최신 아치 리눅스 랩톱을 사용해 보았습니다 . 나는 사용자 ID "root"로 그것을했다.

나는 어떤 종류의 충돌, 공황 또는 종료를 완전히 예상했지만 아무 일도 일어나지 않았습니다. 내가 그랬어 kill -9 1아무런 영향으로, 다시.

아치 리눅스 머신은 systemd요즘 실행되고 있습니다 systemd. Linux 3.7 커널에는 특별한 사례 코드가있을 것으로 예상되지만 생각하지 못한 다른 이유가있을 수 있습니다.

PID 1로 실행되는 다른 것들은 어떻습니까? 슬랙웨어는 여전히 init믿습니다.하지만 프로덕션 슬랙웨어 서버에서 시도하는 것이 두렵습니다. 무선 라우터의 DD-WRT는 일종의 / sbin / init를 실행합니다.

답변:


33

보낸 사람 man 2 kill:

프로세스 ID 1, init 프로세스로 보낼 수있는 유일한 신호는 init가 명시 적으로 신호 처리기를 설치 한 신호입니다. 이것은 실수로 시스템이 다운되지 않도록하기 위해 수행됩니다.

즉, init수신 SIGKILL(종료 포함) 시 원하는 것을 수행 할 수는 있지만 systemd의 init는 신호 처리기를 설치하지 않으므로 아무 일도 일어나지 않습니다.


4
주목 해 주셔서 감사합니다. 이 리눅스에만 해당됩니까? 나는 실수로 init를 죽여서 90 년대 초 SunOS 워크 스테이션을 충돌시키는 것을 기억하는 것 같습니다. 아님 나는 젊었을 때 훨씬 더 무모했습니다.
Bruce Ediger

1
@BruceEdiger, 나도 kill -9 init커널 패닉을 유발하고 유도 할 수 있다는 것을 기억하는 것 같습니다 . 어느 시점에서 바뀌는 것 같습니다.
psusi

2
@BruceEdiger-AIX 서버 및 HP-UX 서버에서 사용해 보았습니다. 둘 다 오류 메시지를 리턴했습니다. kill : 1 : 0403-068 신호가이 프로세스에 유효하지 않습니다. 또는 kill : 1 : 지정된 프로세스가 존재하지 않습니다. 맨 페이지는 이것이 오류를 반환 할 것이라고 구체적으로 언급했습니다. 나는 많은 사람들에게 이것이 이전에 수행 될 수 있다고 들었지만 지난 10 년 동안 아무도 성공하지 못했습니다.
DarkHeart

2
@BruceEdiger 이것은 최근 (최소한 유닉스 수명 측면에서) 개발 된 것으로 보인다. 불행히도 나는 90 년대 초에 살아 있지 않았기 때문에 그것이 일어날 내 지식 범위를 벗어났습니다. 그러나 거의 모든 현대 Unices 가이 동작으로 기본 설정으로 변경 된 것으로 보이므로 흥미로울 것입니다.
Chris Down
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.