Pourquoi «shutdown -r now» se comporte-t-il différemment de «reboot -f» sur Debian Linux?


11

J'ai récemment dû faire face à un problème gênant et intermittent de point de montage suspendu client / serveur NFS. Lorsque le problème se produit sur le client, je ne peux pas démonter, avec un autre comportement étrange. La seule résolution immédiate que j'ai à ce jour est de redémarrer la boîte client.

Mais shutdown -r nowça ne marche pas du tout. Je l'ai depuis découvert reboot -f, ce qui redémarre le système. Pourquoi? J'ai lu les pages de manuel mais rien ne semble répondre à ma question.

Pourquoi shutdown -r nowse comporte- t-il différemment de reboot -f?

(Je continue de résoudre le problème NFS, mais ce n'est pas ma question ici.)

Réponses:


20

À partir de la page de manuel d'arrêt:

Une fois TIME écoulé, shutdown envoie une requête au démon init (8) pour ramener le système au niveau d'exécution approprié.

initdémarre et arrête les travaux lorsque le système change de niveau d'exécution. Lors de l'entrée au niveau d'exécution 6 en raison d'un redémarrage, le système exécute tous les scripts dans /etc/rc6.d. Étant donné que votre système ne répond pas shutdown, il est probable qu'un script /etc/rc6.d(probablement en K05nfs-commonraison de vos problèmes NFS) soit bloqué, ne permettant pas à la séquence d'arrêt de se terminer. En fait, la dernière chose qu'init exécute lors du passage au niveau d'exécution 6 est reboot -d -f -i.

reboot -f ignore tous les scripts et redémarre le système directement.


Merci beaucoup d'avoir lié votre réponse à mon contexte.
Stu Thompson

12

shutdownindique initde commencer la procédure d'arrêt, ce qui implique de faire savoir aux utilisateurs connectés que le système est en train de s'arrêter, de tuer tous les processus avec élégance, de démonter et de synchroniser les lecteurs, etc. Vous êtes bloqué ici parce que les processus bloqués en attente d'E / S ont tendance à être très difficiles à tuer, et votre monture NFS bloquée ne peut pas être démontée.

reboot -f, d'autre part, redémarre immédiatement le serveur sans rien faire. (si rebootle programme initappelle pour arrêter le serveur. Sans l' -findicateur, il vérifiera s'il initpense qu'il est en train de redémarrer et sinon, il appellera à la shutdownplace pour démarrer le processus).


Merci beaucoup d'avoir lié votre réponse à mon contexte.
Stu Thompson

4

Parce que «reboot -f» n'entre pas dans le niveau d'exécution 0 - il indique au système d'exploitation de réinitialiser directement le CPU. La page de manuel sur ma boîte Linux la plus proche indique:

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

La page de manuel shutdown explique plus.


1

Si vous utilisez l' introption sur vos montages NFS, vous shutdown -r nowdevriez pouvoir tuer les processus en attente de fin de NFS IO. Cela peut entraîner une corruption de fichiers, mais probablement pas plus que la shutdown -fcréation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.