왜 다른 바이너리에서 재시작 기능을 제공해야 합니까?
shutdown -r
그리고
reboot
아니면 어떤 면에서 다른가요?
답변1
반드시 필요한 것은 아니지만 Unix의 역사와 버전의 다양성으로 인해 둘 다 있습니다.
해당 매뉴얼 페이지에서:
- 종료 유틸리티는 4.0BSD에 나타납니다.
- 재부팅 유틸리티는 AT&T UNIX 버전 6에 나타납니다.
종료는 더 다양하고 강력하며, 재부팅은 더 친숙하고 기억하기 쉽습니다.
shutdown을 사용하면 임시 매개변수(예: 5분 후 다시 시작)를 지정할 수 있으며 다음을 포함하여 다시 시작 외에도 많은 작업을 수행할 수 있습니다.
- 실제로 종료하지 않고도 사용자를 쫓아낼 수 있습니다.
- 시스템을 종료하는 대신 절전 모드로 전환할 수 있습니다.
- 다시 시작하지 않고 간단히 종료할 수 있습니다(halt 명령과 유사).
- 시스템의 사용자를 위한 사용자 정의 경고 메시지를 추가할 수 있습니다.
그러나 지금 시스템을 재부팅하려는 경우 reboot
에는 shutdown -r now
.
답변2
이 두 명령은 서로 다른 작업을 수행하지만 궁극적으로 서로를 호출할 수 있습니다.~인 것 같다같은 일을 하세요!
reboot
실제로 하드웨어 재부팅을 트리거하기 위해 커널이 호출됩니다. 그러나 시스템을 종료할 준비가 된 경우에만 이 작업을 수행합니다. 모든 데몬과 사용자 프로세스를 중지하고 파일 시스템을 마운트 해제해야 합니다. 그래서 시스템 런레벨을 확인하고, 0이나 6이 아니면 실제로 주어진 명령을 호출합니다 shutdown
.
shutdown
시스템 실행 레벨이 변경됩니다. 실행 수준 변경(중지하려면 0으로 변경, 다시 시작하려면 6으로 변경) 데몬 종료, 파일 시스템 마운트 해제 등을 위해 /etc/rc0.d 또는 rc6.d에서 여러 스크립트를 실행합니다. 마지막으로, 이 스크립트는 halt
or를 호출합니다 reboot
. 이번에는 시스템이 올바른 실행 레벨에 있으며 커널에 다시 시작(또는 중지)하도록 지시합니다.
답변3
iconoclast가 작성한 것 외에도 두 프로그램 사이에는 shutdown
is in /sbin
및 reboot
is in이라는 중요한 차이점이 있습니다 /usr/bin
.
이것이 왜 중요합니까? 난 당신을 말할 것이다.
아래 내용은 /usr
시스템이 최소한으로 작동할 수 있을 만큼 충분히 부팅될 때까지 사용 가능하지 않아도 되는 내용입니다. 전통적으로 별도의 파일 시스템에 마운트되지 않은 최상위 디렉터리( /bin
, /etc
등 ) /sbin
는 시스템이 이 최소 유용 상태에 도달하면 사용할 수 있을 것으로 예상됩니다. 이 디자인에는 여러 가지 의미가 있습니다. 예를 들어 /usr/bin
대안이 있는 경우 프로그램을 사용하는 SysV 초기화 스크립트에 "stop" 절을 작성하는 것은 나쁜 스타일입니다 ./bin
/sbin
shutdown
항상 사용할 수 있는 중요한 유틸리티입니다. reboot
단지 편의 유틸리티일 뿐입니다.