Voir unix.stackexchange.com/questions/8690/… pour la distinction - les commandes peuvent se comporter différemment selon le système d'exploitation (mais font généralement la même chose sous Linux).
PleaseStand
Comme indiqué ci-dessous et expliqué en détail sur unix.stackexchange.com/a/196014/5132 , la prémisse de cette question est fausse sur les systèmes d'exploitation Linux systemd. Ce ne sont pas des binaires différents sur de tels systèmes.
JdeBP
Réponses:
15
Nous n'avons pas nécessairement besoin des deux, mais nous les avons tous les deux en raison de l'histoire d'Unix et de sa multiplicité de versions.
Depuis leurs pages de manuel respectives:
L'utilitaire d'arrêt est apparu dans 4.0BSD.
Un utilitaire de redémarrage est apparu dans la version 6 d'AT & T UNIX.
l'arrêt est plus polyvalent et plus puissant, tandis que le redémarrage est plus convivial et plus facile à mémoriser.
l'arrêt vous permet de spécifier un argument temporel (pour redémarrer dans 5 minutes, par exemple) et vous permet de faire bien d'autres choses que le redémarrage, notamment:
vous pouvez simplement lancer les utilisateurs et non pas réellement arrêter
vous pouvez mettre le système en veille au lieu de l'arrêter
vous pouvez simplement arrêter sans redémarrer (comme la commande d'arrêt)
vous pouvez inclure un message d'avertissement personnalisé pour les utilisateurs du système
Cependant, si vous souhaitez simplement redémarrer le système maintenant, il est plus facile de taper rebootque shutdown -r now.
Fait amusant: certaines versions sont shutdownmaintenant utilisées par défaut. N'essayez pas d'obtenir de l'aide pour l'arrêt avec shutdown -hjamais, surtout pas sur un serveur quelque part dans un centre de données.
Residuum
6
Les deux commandes font quelque chose de différent, mais elles peuvent finir par s'appeler, c'est pourquoi elles semblent faire la même chose!
rebootinvoquera le noyau pour déclencher un redémarrage matériel. Cependant, il ne le fera que si le système est prêt pour l'arrêt - tous les démons et processus utilisateur doivent être arrêtés, les systèmes de fichiers démontés, etc. Il vérifie donc le niveau d'exécution du système, et si ce n'est pas 0 ou 6, alors il invoquera réellement la shutdowncommande pour vous.
shutdownentraîne la modification du niveau d'exécution du système. Le changement de niveau d'exécution (à 0 pour l'arrêt ou 6 pour le redémarrage) exécute de nombreux scripts dans /etc/rc0.d ou rc6.d qui arrêtent les démons, démontent les systèmes de fichiers, etc. Enfin, ces scripts invoquent haltou reboot- cette fois le système est en le niveau d'exécution correct et ils demandent au noyau de redémarrer (ou de s'arrêter).
En plus de ce qu'iconoclaste a écrit, il existe une distinction importante entre les deux programmes: shutdownest dans /sbin, tandis que rebootest dans /usr/bin.
Pourquoi est-ce important, demandez-vous? Je vais vous dire.
Les choses sous /usrsont celles qui ne doivent pas être disponibles jusqu'à ce que le système soit démarré suffisamment loin pour que le système soit minimalement fonctionnel. Répertoires de haut niveau qui sont traditionnellement jamais montés sur des systèmes de fichiers séparés - /bin, /etc, /sbin, etc. - devraient être disponibles alors que le système atteint cet état peu utile. Il y a différentes implications de cette conception; par exemple, c'est un mauvais style d'écrire la clause "stop" d'un script d'initialisation SysV qui utilise des programmes dans /usr/bins'il existe une alternative dans /binou /sbin.
shutdownest l'utilitaire clé, celui toujours disponible. rebootest un utilitaire de commodité uniquement.
rebootest dans /sbinDebian (avec SysVinit) et Ubuntu (avec upstart).
Gilles 'SO- arrête d'être méchant'
D'accord, alors méta-réponse: connais ton système. :) J'utilise CentOS le plus souvent.
Warren Young
Idem pour Arch (systemd), les deux dans / sbin
daisy
En effet, sur les systèmes d'exploitation Linux systemd, l'utilitaire clé n'est pas non plus , car avec systemd toutes ces commandes sont (comme le doco systemd l'a) des commandes de "compatibilité". En effet, la prémisse de la question est fausse. Ils ne sont pas dans des binaires différents. Pour plus de détails, voir unix.stackexchange.com/a/196014/5132 .
Réponses:
Nous n'avons pas nécessairement besoin des deux, mais nous les avons tous les deux en raison de l'histoire d'Unix et de sa multiplicité de versions.
Depuis leurs pages de manuel respectives:
l'arrêt est plus polyvalent et plus puissant, tandis que le redémarrage est plus convivial et plus facile à mémoriser.
l'arrêt vous permet de spécifier un argument temporel (pour redémarrer dans 5 minutes, par exemple) et vous permet de faire bien d'autres choses que le redémarrage, notamment:
Cependant, si vous souhaitez simplement redémarrer le système maintenant, il est plus facile de taper
reboot
queshutdown -r now
.la source
shutdown
maintenant utilisées par défaut. N'essayez pas d'obtenir de l'aide pour l'arrêt avecshutdown -h
jamais, surtout pas sur un serveur quelque part dans un centre de données.Les deux commandes font quelque chose de différent, mais elles peuvent finir par s'appeler, c'est pourquoi elles semblent faire la même chose!
reboot
invoquera le noyau pour déclencher un redémarrage matériel. Cependant, il ne le fera que si le système est prêt pour l'arrêt - tous les démons et processus utilisateur doivent être arrêtés, les systèmes de fichiers démontés, etc. Il vérifie donc le niveau d'exécution du système, et si ce n'est pas 0 ou 6, alors il invoquera réellement lashutdown
commande pour vous.shutdown
entraîne la modification du niveau d'exécution du système. Le changement de niveau d'exécution (à 0 pour l'arrêt ou 6 pour le redémarrage) exécute de nombreux scripts dans /etc/rc0.d ou rc6.d qui arrêtent les démons, démontent les systèmes de fichiers, etc. Enfin, ces scripts invoquenthalt
oureboot
- cette fois le système est en le niveau d'exécution correct et ils demandent au noyau de redémarrer (ou de s'arrêter).la source
En plus de ce qu'iconoclaste a écrit, il existe une distinction importante entre les deux programmes:
shutdown
est dans/sbin
, tandis quereboot
est dans/usr/bin
.Pourquoi est-ce important, demandez-vous? Je vais vous dire.
Les choses sous
/usr
sont celles qui ne doivent pas être disponibles jusqu'à ce que le système soit démarré suffisamment loin pour que le système soit minimalement fonctionnel. Répertoires de haut niveau qui sont traditionnellement jamais montés sur des systèmes de fichiers séparés -/bin
,/etc
,/sbin
, etc. - devraient être disponibles alors que le système atteint cet état peu utile. Il y a différentes implications de cette conception; par exemple, c'est un mauvais style d'écrire la clause "stop" d'un script d'initialisation SysV qui utilise des programmes dans/usr/bin
s'il existe une alternative dans/bin
ou/sbin
.shutdown
est l'utilitaire clé, celui toujours disponible.reboot
est un utilitaire de commodité uniquement.la source
reboot
est dans/sbin
Debian (avec SysVinit) et Ubuntu (avec upstart).