¿Por qué "shutdown -r now" se comporta de manera diferente a "reboot -f" en Debian Linux?

11

Recientemente tuve que lidiar con un molesto e intermitente problema con el punto de montaje del cliente / servidor NFS. Cuando el problema ocurre en el cliente, no puedo desmontar, junto con algún otro comportamiento extraño. La única resolución inmediata que tengo hasta la fecha es reiniciar el cuadro del cliente.

Pero shutdown -r nowno funciona en absoluto. Desde entonces descubrí reboot -f, lo que reinicia el sistema. ¿Por qué? He leído las páginas del manual, pero nada parece responder a mi pregunta.

¿Por qué se shutdown -r nowcomporta de manera diferente que reboot -f?

(Continúo resolviendo el problema de NFS, pero esa no es mi pregunta aquí).

Stu Thompson
fuente

Respuestas:

20

Desde la página de manual de apagado:

Una vez transcurrido el TIEMPO, el apagado envía una solicitud al demonio init (8) para que el sistema baje al nivel de ejecución apropiado.

initinicia y detiene los trabajos a medida que el sistema cambia los niveles de ejecución. Al ingresar al nivel de ejecución 6 debido a un reinicio, el sistema ejecuta todos los scripts en /etc/rc6.d. Dado que su sistema no responde shutdown, es probable que un script en /etc/rc6.d(posiblemente K05nfs-commondebido a sus problemas de NFS) esté atascado, lo que no permite que finalice la secuencia de apagado. De hecho, lo último que ejecuta init al cambiar al nivel de ejecución 6 es reboot -d -f -i.

reboot -f omite todos los scripts y reinicia el sistema directamente.

Cakemox
fuente
Muchas gracias por vincular tu respuesta a mi contexto.
Stu Thompson
12

shutdownindica initque comience el procedimiento de apagado, que consiste en informar a los usuarios que han iniciado sesión que el sistema se está cerrando, eliminando todos los procesos con gracia, desmontando y sincronizando unidades, etc. Te estás quedando atrapado aquí porque los procesos atascados esperando IO tienden a ser muy difíciles de matar, y tu montaje NFS atascado no se puede desmontar.

reboot -f, por otro lado, reinicia inmediatamente el servidor sin hacer nada de eso. ( rebootes el programa que initllama para apagar el servidor. Sin el -findicador, verificará si initcree que se está reiniciando actualmente y, de lo shutdowncontrario, llamará para iniciar el proceso).

DerfK
fuente
Muchas gracias por vincular tu respuesta a mi contexto.
Stu Thompson
4

Debido a que 'reiniciar -f' no entra en el nivel de ejecución 0, le dice al sistema operativo que reinicie la CPU directamente. La página de manual en mi cuadro de Linux más cercano dice:

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

La página del manual de apagado explica más.

symcbean
fuente
1

Si usa la intropción en sus montajes NFS, entonces shutdown -r nowdebería poder eliminar los procesos que esperan que NFS IO se complete. Esto puede provocar la corrupción del archivo, pero probablemente no sea más que shutdown -fcrear.

BillThor
fuente