사용자로 'killall init'을 실행하면 왜 로그 아웃합니까?


12

Ubuntu 14.XX를 실행하는 여러 컴퓨터에서 "killall init"명령을 사용자로 실행하고 즉시 로그 아웃되었습니다. 문제없이 다시 로그인 할 수있었습니다. 왜 이런거야? 무대 뒤에서 무슨 일이 일어나고 있습니까?

답변:


21

최신 Upstart 시스템에서는 GUI를 사용하여 로그인 할 때 세션 초기화 프로세스가 시작됩니다. Ubuntu는 Upstart를 사용하므로 init세션에 대한 프로세스가 있습니다. pstree -ps $$터미널에서 사용하여 테스트하십시오 .

$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)                                                                                                                                                                                  
                                                                             └──zsh(7944)

따라서를 실행 하면 권한이 없기 때문에 PID 1을 killall init죽이지 init않고 세션 ( init이 예제에서는 PID 9526)을 사용합니다.

이는 initGUI 세션의 관리 프로세스이므로 세션을 종료하면 세션이 종료되므로 로그 아웃됩니다.


killall은 항상 프로세스 트리에서 가장 가까운 친척에게 신호를 보내나요? 명령을 루트로 실행하면 (예 : sudo) 동일한 결과 또는 커널 패닉이 발생합니까?
Tim Seguine

1
@TimSeguine 이름에서 알 수 있듯이이 이름을 가진 모든 프로세스로 전송됩니다. BTW, 어떤 사람들은 솔라리스와 같은 다른 시스템에서 완전히 다르게 작동 하기 때문에 pkill대신 선호 합니다 .killallkillall
glglgl

killall모두 죽인다. 따라서 이름입니다.
오리온

1
@TimSeguine 모두에게 보내지 만, 일반 사용자 인 경우 다른 사용자의 프로세스에 신호를 보낼 수 없습니다. 따라서 자신의 프로세스 트리에있는 것에 만 영향을줍니다.
Barmar

좋은 시스템 , 특히 유용한 시스템 에서 실행 killall init되는 root것은 좋지 않습니다 . 코드 루프 가 끝날 때 도달하지 않기 때문에 커널 패닉이 발생 한다고 생각 합니다. initreturnmain
SlySven
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.