재부팅은 우분투의 init 6과 동일합니까?
Amazon EC2에서 Ubuntu 12.04를 실행하고 있습니다. 상자에 ssh’ed하면 입력 할 수 runlevel
있으며 다음을 얻습니다.
N 2
보면 man reboot
내가 그 참조 :
–force와 함께 호출되거나 실행 레벨 0 또는 6에있을 때이 도구는 reboot (2) 시스템 호출 자체를 호출하고 시스템을 직접 재부팅합니다. 그렇지 않으면 적절한 인수를 사용하여 shutdown (8) 도구를 호출하기 만하면됩니다.
내가 읽는다면 man shutdown 8
:
시스템 종료는 시스템을 안전하게 중단시킵니다. 로그인 한 모든 사용자에게 시스템이 다운되고 있음을 알리고 TIME 후 마지막 5 분 내에 새 로그인이 금지됩니다.
와의 차이점에 대한 나의 기본 이해 는 다음 reboot
과 init 6
같습니다.
- 다른 배포판이나 오래된 배포판
reboot
에서는 디스크를 마운트 해제하고 기본적으로 종료 스크립트를 실행하지 않고 전원 스위치를 튕 깁니다. init 6
/etc/init/rc.*
시스템의 실행 수준을 줄이므로 모든 종료 스크립트를 실행합니다.- 우분투의 새로운 버전에
reboot
명령없이--force
또는-f
기본적으로 같은 일을 할 것입니다 않습니다 shutdown 명령을 실행init 6
- 더 안전하고 더 나은 크로스 디스트로 작동 하는
init 6
대신 사용하는 습관을reboot
들이는 것이 좋을 수도 있지만,reboot
누군가가 그것을 사용하는 경우 오류 / 데이터 손실을 시도하고 방지하기 위해 기본 동작 이 변경되었습니다.
그게 맞습니까? 그렇지 않다면 무엇을 놓치고 있습니까?
답변
다음 과 같은 경우를 제외하고 init 6
는 reboot
, 대신 사용해야 할 강력한 이유가 없습니다.
- 어떤 이유로
reboot
실행 파일 이 누락 되었거나 - 의도적으로 시스템이 다운되고 있음을 사용자에게 알리지 않으려 고합니다.
reboot
(실행하지 않는 한 reboot --force
) 실제로 “더 부드럽게”종료하는 방법입니다.
치다:
init 6
/etc/init/rc.*
시스템의 실행 수준을 줄이므로 모든 종료 스크립트를 실행합니다.
그러나reboot
명령 이라고 없이--force
플래그 만 직접 (를 통해 시스템을 재부팅 시스템 호출 이 두 가지 상황 중 하나가 적용 경우) :reboot
- 시스템이 런레벨 0 (단일 사용자 모드)에 있으므로 발생할 수 있는 런레벨의 감소가 없으므로 종료 스크립트가 자동으로 실행되지 않습니다.
- 시스템이 런레벨 6에 있습니다. 어떤
init 6
실행 레벨 6의 시스템을 넣어 그것을 않습니다 다시, 아무것도 실행 거기에init 6
실행중인 것을 할 것입니다reboot
명령하는 것은하지 않을 것이다.
그렇지 않으면와 sudo reboot
같습니다 sudo shutdown -r now
. 이것은 모든 좋은 일을 sudo init 6
하지만, 또한 :
- 시스템이 다운되고 있음을 사용자에게 알립니다.
- 새로운 로그인을 방지합니다 (아마도 성공하지 못할 수도 있음).
- 보다 직관적이고 자체 문서화
sudo init 6
입니다.
로그인 만하고 로컬 로그인 만 사용 init 6
하는 시스템 인 경우 재부팅 하는 데 아무런 문제가 없습니다 . 그것이 당신이 재부팅을 선호하는 방법이라면, 그렇게하세요. 그렇게함으로써 아무것도 해치지 않을 것입니다. 그러나이 방법으로 객관적으로 선호하는 것은 없습니다.
init
자체 문서에 따르면 시스템을 종료하거나 재부팅하는 일반적인 방법은 아닙니다. init
사용자가 실행할 때 (예 : 실행시 sudo init 6
) 실제로 실행 된다는 것을 고려 telinit
하십시오 (참조 man init
). telinit
실제로 런레벨을 바꾸는 것입니다. 그리고 man telinit
우리에게 말합니다 :
일반적으로 shutdown (8) 도구를 사용하여 시스템 을 중지 또는 재부팅하거나 단일 사용자 모드로 전환합니다.