Sous Linux (en particulier, les dérivés RHEL CentOS et Fedora), y a-t-il une différence?
echo b > /proc/sysrq-trigger
"Redémarrez immédiatement le système, sans démonter ni synchroniser les systèmes de fichiers", selon Wikipedia.
reboot -n
"Ne synchronisez pas avant de redémarrer ou d'arrêter. Notez que le noyau et les pilotes de stockage peuvent toujours se synchroniser", selon man 8 reboot. Y a-t-il réellement une différence dans ce comportement?
Réponses:
Le
/sbin/reboot
est un exécutable régulier dans le système de fichiers. Si votre système de fichiers est arrosé (par exemple, blocage du pilote du système de fichiers, blocage du matériel SATA ou blocage du micrologiciel du disque), les modifications apportées pour exécuter correctement cet exécutable sont minimes. D'un autre côté, en supposant que vous avez déjà un shell racine ouvert,echo b > /proc/sysrq-trigger
vous n'avez besoin d'aucun accès au système de fichiers.la source
$ sync; echo b > /proc/sysrq-trigger
$ whereis echo echo: /usr/bin/echo /usr/share/man/man1p/echo.1p.gz /usr/share/man/man1/echo.1.gz
$ whereis reboot reboot: /usr/sbin/reboot /usr/share/man/man2/reboot.2.gz /usr/share/man/man8/reboot.8.gz
echo
est généralement un shell intégré, il est donc disponible si vous avez une invite de shell. Oui,/bin/echo
existe aussi, car selon les règles POSIX, toutes les commandes doivent exister dans le chemin mais peuvent être remplacées par une implémentation du shell pour augmenter les performances. Leecho
est utilisé si souvent que seuls les shells très très basiques ne l'implémentent pas. (Comparerhelp echo
vs.man echo
)