Le redémarrage est-il identique à init 6 pour Ubuntu?
J'utilise Ubuntu 12.04 sur Amazon EC2. Lorsque ssh'ed dans la boîte je peux taper runlevel
et je reçois:
N 2
En regardant man reboot
je vois que:
Lorsqu'il est appelé avec --force ou en niveaux d'exécution 0 ou 6, cet outil appelle l'appel système reboot (2) lui-même et redémarre directement le système. Sinon, cela appelle simplement l'outil shutdown (8) avec les arguments appropriés.
Si je lis man shutdown 8
je vois:
arrêt veille à ce que le système soit arrêté de manière sécurisée. Tous les utilisateurs connectés sont informés que le système est en panne et, dans les cinq dernières minutes de TIME, toute nouvelle connexion est empêchée.
Ma compréhension de base de la différence entre reboot
et init 6
est la suivante:
reboot
démonterait simplement les disques et actionnerait l'interrupteur d'alimentation sans exécuter aucun script d'arrêt.init 6
exécutera tous les scripts d'arrêt dans /etc/init/rc.*
car il réduit le niveau d'exécution du systèmereboot
sans --force
ou -f
exécutera la commande shutdown, ce qui ferait en principe la même chose que init 6
init 6
au lieu de reboot
car cela est plus sûr et fonctionnerait mieux en distribution croisée, mais le comportement par défaut de reboot
a été modifié pour éviter les erreurs/la perte de données si quelqu'un l'utilise.Est-ce à peu près correct? Si non, qu'est-ce qui me manque?
Il n'y a vraiment jamais de raison impérieuse d'utiliser init 6
au lieu de reboot
, à moins que:
reboot
, ou est manquant.reboot
(tant que vous n’exécutez pas reboot --force
) est en fait le moyen "plus doux" de fermer.
Considérer:
init 6
exécutera tous les scripts d'arrêt dans/etc/init/rc.*
car il réduit le niveau d'exécution du système
Mais la commande reboot
, appelée sans le drapeau --force
, ne redémarre directement le système (via l'appel système reboot
) lorsque une de ces deux situations s'applique:
init 6
fait pour placer le système au niveau d'exécution 6. Là encore, l'exécution de init 6
n'empêchera pas l'exécution de la commande reboot
.Sinon, Sudo reboot
est équivalent à Sudo shutdown -r now
. Ceci fait toutes les bonnes choses que Sudo init 6
fait, mais aussi:
Sudo init 6
.Si vous êtes sur un système avec seulement vous êtes connecté et uniquement des connexions locales, il n'y a rien de mal à utiliser init 6
pour redémarrer. Si c'est comme ça que vous préférez redémarrer, allez-y, allez-y ... vous ne faites rien de mal en le faisant. Mais rien de plus objectivement préférable de le faire de cette façon.
La propre documentation de init
indique que ce n'est pas le moyen habituel d'arrêter ou de redémarrer le système. Considérez que lorsque init
est exécuté par l'utilisateur (comme lorsque vous exécutez Sudo init 6
), il exécute en fait telinit
(voir man init
). telinit
est ce qui change réellement les niveaux d'exécution. Et man telinit
nous dit:
Normalement, vous utiliseriez l'outil shutdown (8) pour arrêter ou redémarrer le système, ou pour le ramener au mode mono-utilisateur.