Por que “shutdown -r now” se comporta de maneira diferente de “reboot -f” no Debian Linux?

11

Recentemente, tive que lidar com um problema intermitente e intermitente do ponto de montagem do cliente / servidor do NFS. Quando o problema ocorre no cliente, não consigo desmontar, juntamente com outro comportamento estranho. A única resolução imediata que tenho até agora é reiniciar a caixa do cliente.

Mas shutdown -r nownão funciona. Eu já descoberto reboot -f, que não reiniciar o sistema. Por quê? Eu li as páginas de manual, mas nada parece responder à minha pergunta.

Por que shutdown -r nowse comporta de maneira diferente reboot -f?

(Continuo resolvendo o problema do NFS, mas essa não é a minha pergunta aqui.)

Stu Thompson
fonte

Respostas:

20

Na página do manual shutdown:

Após o término do TIME, o shutdown envia uma solicitação ao daemon init (8) para trazer o sistema para o nível de execução apropriado.

initinicia e interrompe os trabalhos conforme o sistema altera os níveis de execução. Ao entrar no nível de execução 6 devido a uma reinicialização, o sistema executa todos os scripts em /etc/rc6.d. Como seu sistema não está respondendo shutdown, é provável que um script /etc/rc6.d(possivelmente K05nfs-commondevido aos problemas do NFS) esteja bloqueado, não permitindo que a sequência de desligamento seja concluída. De fato, a última coisa que init executa ao mudar para o nível 6 é reboot -d -f -i.

reboot -f pula todos os scripts e reinicia o sistema diretamente.

Cakemox
fonte
Muito obrigado por vincular sua resposta ao meu contexto.
Stu Thompson
12

shutdowninstrui inita iniciar o procedimento de desligamento, que envolve avisar os usuários conectados que o sistema está sendo desligado, eliminando todos os processos normalmente, desmontando e sincronizando unidades e assim por diante. Você está ficando paralisado aqui porque os processos bloqueados aguardando E / S tendem a ser muito difíceis de eliminar, e sua montagem NFS bloqueada não pode ser desmontada.

reboot -f, por outro lado, reinicia imediatamente o servidor sem fazer nada disso. ( rebooté o programa que initchama para desligar o servidor. Sem o -fsinalizador, ele verificará se initacha que está sendo reiniciado no momento e, caso contrário, será chamado shutdownpara iniciar o processo).

DerfK
fonte
Muito obrigado por vincular sua resposta ao meu contexto.
Stu Thompson
4

Como 'reboot -f' não entra no nível de execução 0 - ele diz ao sistema operacional para reinicializar a CPU diretamente. A página de manual na minha caixa Linux mais próxima diz:

 -f     Force halt or reboot, don't call shutdown(8)

A página do manual shutdown explica mais.

symcbean
fonte
1

Se você usar a intropção nas montagens do NFS, shutdown -r nowpoderá eliminar os processos que aguardam a conclusão do NFS IO. Isso pode resultar em corrupção do arquivo, mas provavelmente não mais do que shutdown -fcria.

BillThor
fonte