최근에 성가신 간헐적 NFS 클라이언트 / 서버 중단 마운트 포인트 문제를 처리해야했습니다. 클라이언트에서 문제가 발생하면 다른 이상한 동작과 함께 마운트를 해제 할 수 없습니다. 내가 지금 당장해야 할 유일한 해결책은 클라이언트 상자를 재부팅하는 것입니다.
그러나 shutdown -r now
전혀 작동하지 않습니다. 나는 이후 발견했습니다 reboot -f
하는 않는 시스템을 재부팅합니다. 왜? 맨 페이지를 읽었지만 내 질문에 대답하는 것은 없습니다.
왜 shutdown -r now
다르게 행동 합니까 reboot -f
?
(NFS 문제를 계속 해결하고 있지만 여기서는 제 질문이 아닙니다.)
답변
종료 매뉴얼 페이지에서 :
TIME이 경과되면 shutdown은 요청을 init (8) 데몬으로 보내 시스템을 적절한 런레벨로 가져옵니다.
init
시스템이 실행 레벨을 변경함에 따라 작업을 시작 및 중지합니다. 재부팅으로 인해 런레벨 6에 들어가면 시스템은 /etc/rc6.d의 모든 스크립트를 실행합니다. 시스템이에 응답하지 않기 때문에 ( NFS 문제가 있을 수 있음) shutdown
스크립트 가 중단되어 종료 시퀀스가 완료되지 않을 수 있습니다. 실제로 runlevel 6으로 변경할 때 init가 마지막으로 실행하는 것은입니다 ./etc/rc6.d
K05nfs-common
reboot -d -f -i
reboot -f
모든 스크립트를 건너 뛰고 시스템을 직접 재부팅합니다.
답변
shutdown
init
종료 절차를 시작하도록 지시 합니다. 여기에는 로그인 한 사용자에게 시스템이 종료되고 있음을 알리고 모든 프로세스를 정상적으로 종료하며 드라이브 마운트 해제 및 동기화 등이 포함됩니다. IO를 기다리면서 프로세스가 중단되기가 매우 어려워서 중단 된 NFS 마운트를 마운트 해제 할 수 없기 때문에 여기에서 중단됩니다.
reboot -f
반면에 서버는 아무 것도하지 않고 즉시 서버를 재부팅합니다. ( reboot
프로그램 init
은 서버를 종료하기 위해 호출합니다. -f
플래그가 없으면 init
현재 재부트 중이라고 생각 하는지 확인 하고 그렇지 않은 경우 shutdown
프로세스를 시작하기 위해 대신 호출 합니다).
답변
‘reboot -f’는 실행 레벨 0으로 들어 가지 않기 때문에 OS에 CPU를 직접 초기화하도록 지시합니다. 가장 가까운 Linux 상자의 맨 페이지에 다음과 같이 나와 있습니다.
-f Force halt or reboot, don't call shutdown(8)
종료 매뉴얼 페이지에 자세한 내용이 있습니다.
답변
intr
NFS 마운트 에서 옵션 을 사용하면 shutdown -r now
NFS IO에서 대기중인 프로세스가 종료 될 수 있습니다. 이로 인해 파일이 손상 될 수 있지만 더 이상 만들 수 없습니다 shutdown -f
.