«Reboot» ou «shutdown -r now»: quelle commande de redémarrage est plus sûre?

50

Notre organisation compte environ 500 machines Linux RedHat.

Sur toutes les machines, nous avons installé des applications et des services sous /etc/init.d, ainsi que sur des serveurs Oracle RAC. Nous avons l'intention d'effectuer des mises à jour yum sur toutes les machines, puis de les redémarrer.

Alors je me demandais quelle commande est plus sûre:

reboot

ou

shutdown -r now
Dandan
la source
1
nous avons tous genre - comme redhat 4,5,6,7
jeudi
6
Revenons en arrière: pourquoi pensez-vous qu'il pourrait y avoir une différence de sécurité?
underscore_d
2
@underscore_d: il n'est pas déraisonnable de penser qu'il s'agisse d'une commande "à usage interne uniquement" qui ne fait pas les mêmes étapes d'arrêt complet. Par exemple, l'un peut utiliser l'autre après avoir effectué certaines étapes initiales d'arrêt en mode minimal. Bien sûr, la page de manuel explique qu’il reboots’agit d’une commande héritée et n’existe toujours que pour les versions antérieures.
Peter Cordes
1
@knowhy Une question ne peut pas être une copie d'une question sur un autre site ..
Insane

Réponses:

50

Pour les systèmes Red Hat, il n'y a pas de différence fonctionnelle entre rebootet shutdown -r now.

Faites ce qui est plus facile pour vous.

ewwhite
la source
13
Mais on vous fait taper plus et c'est fondamentalement «plus cool»!
Insane
L'un nécessite un accès super utilisateur, l'autre peut être exécuté par n'importe quel utilisateur (sauf restriction) à partir d'une session X.
Burhan Khalid
2
@BurhanKhalid Si des personnes se connectent de manière aléatoire à des sessions X sur des serveurs, vous pourriez avoir de plus gros problèmes que de vous demander laquelle de ces deux commandes est "plus sûre".
un CVn
1
Au moins sur Debian (bien que je reconnaisse volontiers que je ne connais pas Red Hat, mais la réponse de Janne Pikkarainen suggère que cela peut être similaire mais différent) halt, rebootet poweroffn'accepte pas de message de motif ni d'heure, comme l'explique Mikhail T. . Je pense que je considérerais qu'un outil peut faire quelque chose qu'un autre ne permet pas d'être une "différence fonctionnelle".
un CVn
88

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 pour sortir, etc. - le processus sera plus ordonné et professionnel.

Mikhail T.
la source
13

Si vous jetez un coup d'œil, dans RHEL 7, /sbin/shutdownil /sbin/reboots'agit en fait de liens symboliques menant à la systemctlcommande de systemd . Alors, utilisez ce que vous voulez. Pas de différence fonctionnelle comme le dit ewwhite, pas même dans les versions précédentes de RHEL qui n'utilisaient pas encore systemd.

Janne Pikkarainen
la source
12
Je ne trouve pas cet argument très convaincant: il est évident que /sbin/shutdownet /sbin/rebootne se comportent pas de la même manière dans tous les cas (en particulier: /sbin/shutdownne redémarre pas par défaut!), Donc s’ils sont liés de manière symétrique au même exécutable, ils doivent examine son ARGV[0]comportement et ajuste son comportement en conséquence. Bien que cela réduise certainement le risque de différences non intentionnelles , cela ne prouve pas de manière convaincante que le PO ne souhaite pas connaître de différences fonctionnelles intentionnelles .
Ruakh
3
Méfiez-vous de supposer qu'un lien symbolique implique une équivalence, en particulier si différents noms sont impliqués.
mckenzm
Ruakh a raison - réfléchissez-y un instant, même si rebootson lien est symbolique systemctl, vous ne pouvez pas utiliser, par exemple, reboot status whatever.servicecomme vous le feriez avec ce dernier, pouvez-vous?
Grawity
9

L'utilisation rebootest plus sûre.

L'utilisation de rebootvotre intention est claire et il n'y a aucun moyen de la confondre avec autre chose shutdown -t nowqui pourrait entraîner quelques maux de tête si vous utilisez sur un serveur distant avec un contrôle limité.

Antzi
la source
2
IMHO réponse sous-estimée. Très souvent, nous oublions combien il est important de clarifier les intentions et de gagner du temps et de dire des mots loufoques à long terme!
RoughTomato
1

Pour RHEL moderne, il est recommandé d’utiliser la commande systemctl comme résumé ci-après : Les distributions [récentes] RHEL doivent utiliser la nouvelle commande systemctl pour exécuter poweroff / reboot. Comme indiqué dans les pages de manuel de redémarrage et d'arrêt, il s'agit d'une "commande héritée disponible uniquement à des fins de compatibilité".

Toutefois, si vous utilisez de nombreuses distributions différentes, ou des distributions de différents millésimes, restez peut-être fidèle shutdown -r now 'reason for shutdown'.

La principale raison d'utilisation rebootest d'éviter le risque d'oubli d'ajouter le -r lors de l'utilisation shutdown -rsur une machine distante, ce qui pourrait facilement empêcher de vous reconnecter et obliger l'administrateur distant (le cas échéant) à redémarrer le système. machine.

robocat
la source
0

Les systèmes plus anciens faisaient clairement la distinction entre shutdownet reboot. Ce dernier n’arrêterait pas les services et ne synchroniserait pas nécessairement les tampons de disque. Dans des environnements hétérogènes - ou pour éviter des précédents qui pourraient être dangereux à l'avenir lorsque vous rencontrez d'autres implémentations * ix -, il est utile de prendre l' shutdownhabitude.

utilisateur19151
la source