Le redémarrage est-il identique à init 6?

22

Le redémarrage est-il le même qu'init 6 pour Ubuntu?

J'utilise Ubuntu 12.04 sur Amazon EC2. Une fois dans la boîte, je peux taper runlevelet j'obtiens:

N 2

En regardant, man rebootje vois que:

Lorsqu'il est appelé avec --force ou lorsqu'il est au niveau 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 8je vois:

l'arrêt permet d'arrêter le système en toute sécurité. Tous les utilisateurs connectés sont informés que le système est en panne et, dans les cinq dernières minutes de TIME, de nouvelles connexions sont empêchées.

Ma compréhension de base de la différence entre rebootet init 6est:

  • Sur d'autres distributions et peut-être des distributions plus anciennes, rebootil suffit de démonter les disques et d'appuyer sur l'interrupteur d'alimentation sans exécuter de scripts d'arrêt
  • init 6exécutera tous les scripts d'arrêt /etc/init/rc.*car il réduit le niveau d'exécution du système
  • Sur les versions plus récentes d'Ubuntu, la rebootcommande sans --forceou -fexécutera la commande d'arrêt, ce qui ferait essentiellement la même chose queinit 6
  • Il est probablement préférable de prendre l'habitude d'utiliser init 6au lieu de rebootcar il est plus sûr et fonctionnerait mieux entre les distributions, mais le comportement par défaut de reboota été changé pour essayer d'éviter les erreurs / pertes de données si quelqu'un l'utilise.

C'est à peu près ça? Sinon, que me manque-t-il?

cwd
la source

Réponses:

23

Il n'y a vraiment jamais de raison impérieuse d'utiliser à la init 6place de reboot, sauf:

  • Pour une raison quelconque, vous manquez l' rebootexécutable, ou
  • Vous essayez délibérément d'éviter d'aviser les utilisateurs que le système est en panne.

reboot(tant que vous ne courez pas reboot --force) est en fait la manière la plus "douce" de vous arrêter.

Considérer:

init 6exécutera tous les scripts d'arrêt /etc/init/rc.*car il réduit le niveau d'exécution du système

Mais la rebootcommande , appelée sans l' --forceindicateur, ne redémarre directement le système (via l' rebootappel système ) que lorsque l'une de ces deux situations s'applique:

  • Le système est au niveau d'exécution 0 (mode mono-utilisateur), il n'y a donc aucune réduction du niveau d'exécution qui peut se produire, donc aucun script d'arrêt n'est exécuté automatiquement.
  • Le système est au niveau d'exécution 6. Que init 6faut-il pour mettre le système au niveau d'exécution 6. Encore une fois, il n'y a rien en cours d' init 6exécution que l'exécution de la rebootcommande ne fera.

Sinon, sudo rebootest équivalent à sudo shutdown -r now. Cela fait toutes les belles choses sudo init 6, mais aussi:

  • informe les utilisateurs que le système est en panne.
  • empêche les nouvelles connexions (même si elles ne réussiraient probablement pas de toute façon).
  • est plus intuitif et auto-documenté quesudo init 6 .

Si vous êtes sur un système avec uniquement vous connecté et uniquement des connexions locales, il n'y a rien de mal à utiliser init 6pour redémarrer. Si c'est comme ça que vous préférez redémarrer, alors allez-y, vous ne faites de mal à rien. Mais il n'y a rien d'objectivement préférable à le faire de cette façon.

initSa propre documentation indique que ce n'est pas la manière normale d'arrêter ou de redémarrer le système. Considérez que lorsque initest exécuté par l'utilisateur (comme lorsque vous exécutez sudo init 6), il s'exécute réellement telinit(voir man init). telinitest ce qui change réellement les niveaux d'exécution. Et man telinitnous dit:

Normalement, vous utiliseriez l' outil shutdown (8) pour arrêter ou redémarrer le système, ou pour le mettre en mode mono-utilisateur.

Eliah Kagan
la source
J'ai un PC Dell Alienware X51, où j'ai installé Ubuntu 13.04 et le noyau 3.11. Quand je fais $ init 6, il redémarre et parfois le BIOS continue de s'afficher pour toujours. EST-CE parce que j'utilise init 6 et non la commande reboot?
1
@YumYumYum Je ne vois pas pourquoi l'utilisation init 6provoquerait cela. Lorsque vous utilisez rebootau lieu de init 6, est-il toujours dépassé le BIOS?
Eliah Kagan du
1
J'ai mis à jour le micrologiciel du BIOS de A00 à A02, depuis lors, mon redémarrage ou init 6 fonctionne, il semble donc que le problème de BIOS ait été. Merci.
L'exécution reboots'arrête parfois sur mon serveur Ubuntu 14.02 de connexion mono-utilisateur et locale uniquement. Est-ce sûr que je fais toujours syncsuivi d'un reboot -f?
user3549648