재부팅은 init 6과 동일합니까? 로그인이 금지됩니다. 와의 차이점에 대한 나의 기본 이해

재부팅은 우분투의 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 분 내에 새 로그인이 금지됩니다.

와의 차이점에 대한 나의 기본 이해 는 다음 rebootinit 6같습니다.

  • 다른 배포판이나 오래된 배포판 reboot에서는 디스크를 마운트 해제하고 기본적으로 종료 스크립트를 실행하지 않고 전원 스위치를 튕 깁니다.
  • init 6/etc/init/rc.*시스템의 실행 수준을 줄이므로 모든 종료 스크립트를 실행합니다.
  • 우분투의 새로운 버전에 reboot명령없이 --force또는 -f기본적으로 같은 일을 할 것입니다 않습니다 shutdown 명령을 실행init 6
  • 더 안전하고 더 나은 크로스 디스트로 작동 하는 init 6대신 사용하는 습관을 reboot들이는 것이 좋을 수도 있지만, reboot누군가가 그것을 사용하는 경우 오류 / 데이터 손실을 시도하고 방지하기 위해 기본 동작 이 변경되었습니다.

그게 맞습니까? 그렇지 않다면 무엇을 놓치고 있습니까?



답변

다음 과 같은 경우를 제외하고 init 6reboot, 대신 사용해야 할 강력한 이유가 없습니다.

  • 어떤 이유로 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) 도구를 사용하여 시스템 을 중지 또는 재부팅하거나 단일 사용자 모드로 전환합니다.


답변