Quelle est la différence entre reboot, init 6 et shutdown -r now?

100

Je veux juste connaître la différence entre

  • reboot
  • init 6
  • shutdown -r now

et lequel est le plus sûr et le meilleur?

Rahul Patil
la source
1
Le comportement exact de ces trois commandes varie d'un système d'exploitation à l'autre.
Thorbjørn Ravn Andersen

Réponses:

83

Il n'y a pas de différence en eux. En interne, ils font exactement la même chose:

  • rebootutilise la shutdowncommande (avec le commutateur -r). La commande shutdown permet de tuer tous les processus en cours d'exécution, de démonter tous les systèmes de fichiers et enfin d'indiquer au noyau d'émettre la commande d'alimentation ACPI. La source peut être trouvée ici . Dans les distributions plus anciennes, la commande de redémarrage forçait les processus à quitter en émettant le SIGKILLsignal (toujours présent dans les sources, peut être invoqué avec -foption), dans les distributions les plus récentes, la valeur par défaut est plus gracieuse et plus conviviale init 1 -> shutdown -r. Cela garantit que les démons se nettoient avant l'arrêt.

  • init 6indique au initprocessus d'arrêter tous les processus / daemons générés comme indiqué dans les fichiers init (dans l'ordre inverse de leur démarrage) et enfin d'appeler la shutdown -r nowcommande pour redémarrer la machine

Aujourd'hui, il n'y a pas beaucoup de différence puisque les deux commandes font exactement la même chose et respectent les scripts init utilisés pour démarrer services / démons en appelant les scripts d'arrêt correspondants. Sauf reboot -f -r nowcomme indiqué ci-dessous

Une petite explication tirée des pages de manuel explique pourquoi ce reboot -fn'est pas sûr:

  -f, --force
    Forcer l'arrêt immédiat, la mise hors tension, le redémarrage. Ne contactez pas le système init.

Modifier:

Oublié de mentionner, dans les prochaines distributions RHEL, vous devriez utiliser la nouvelle systemctlcommande pour lancer poweroff / reboot. Comme indiqué dans les pages de manuel de rebootet shutdownils constituent "une commande héritée disponible uniquement à des fins de compatibilité". et la systemctlméthode sera le seul sûr.

Martino Dino
la source
Parfois, mon redémarrage se bloque au SIGTERM, y a-t-il un moyen de savoir pourquoi, et aussi un moyen de temporiser le redémarrage, de sorte que si cela prend trop de temps, le redémarrage est forcé?
CMCDragonkai
2
Ces versions de RHEL ne sont plus "à venir". Comme expliqué plus en détail sur unix.stackexchange.com/a/196014/5132 , sur ces systèmes d'exploitation système, il n'y a pas de différence. Ce ne sont même pas des programmes différents.
JdeBP
Avez-vous tapé en disant init 1 -> shutdown -r?
deed02392
Votre lien est cassé.
whoKnows
8

L’arrêt est préférable car il vous permet de spécifier la raison de l’action drastique - quelque chose que vous devriez toujours faire. Le message sera enregistré dans le journal de bord pour la postérité. Par exemple:

shutdown -r now 'Kernel upgrade requires reboot'

Vous pouvez également effectuer un redémarrage programmé - en spécifiant autre chose que nowl'heure du redémarrage:

shutdown -r 22:00 'Work around kernel memory leak'

Ensuite, vos utilisateurs recevront des rappels périodiques leur indiquant que le temps approche - le processus sera plus ordonné et professionnel.

Mikhail T.
la source
5

Sur les unités traditionnelles, rebootet shutdown -r nowsont des commandes très différentes. Dans des conditions d'utilisation normales, son utilisation en reboottoute sécurité est uniquement sécurisée.

shutdown -r nowest la méthode canonique pour éteindre différents * nix et être plus sûr à utiliser en général et est fonctionnellement équivalente à init 6.

redémarrage (8) init (8)

utilisateur2619306
la source
4

Sous FreeBSD, il y a une différence entre rebootet shutdown -r now. De la rebootpage de manuel:

Normalement, l’utilitaire shutdown (8) est utilisé lorsque le système doit être arrêté ou redémarré, ce qui permet aux utilisateurs d’avertir leur destin imminent et de mettre fin proprement à des programmes spécifiques.

Marián Černý
la source
1
Cependant, ce n'est pas une question BSD, comme en témoigne la balise sur la question et l'utilisation d'un niveau d'exécution System 5 dans l'une des commandes. ☺
JdeBP
1
Je sais que c'est une question Linux. Je pensais que quelqu'un trouverait peut-être utile de savoir que sur certains autres systèmes, il y a une différence.
Marián Černý