Unterschied zwischen Neustart -n und Echo b> / proc / sysrq-Trigger?

8

Gibt es unter Linux (insbesondere bei den RHEL-Derivaten CentOS und Fedora) einen Unterschied?

echo b > /proc/sysrq-trigger

"Starten Sie das System sofort neu, ohne die Bereitstellung oder Synchronisierung von Dateisystemen aufzuheben", so Wikipedia.

reboot -n

"Nicht vor dem Neustart synchronisieren oder anhalten. Beachten Sie, dass der Kernel und die Speichertreiber möglicherweise noch synchronisiert werden", so Man 8-Neustart. Gibt es tatsächlich einen Unterschied in diesem Verhalten?

sh-beta
quelle
Warum würden Sie dafür stimmen, dies zu schließen?
Sh-Beta
Teste es und probiere es aus;) Aber wirklich, warum machst du das?
ewwhite
Ich wünschte, ich hätte das gesehen, als es gefragt wurde. Ich würde es auf den Unix-Stack-Exchange migrieren, aber leider ist es zu alt, um migriert zu werden :( Wenn dies immer noch ein Problem ist, auf das Sie eine Antwort wünschen,
Mark Henderson

Antworten:

9

Das /sbin/rebootist eine reguläre ausführbare Datei im Dateisystem. Wenn Ihr Dateisystem abgespritzt ist (z. B. Dateisystemtreiber hängen, SATA-Hardware hängen oder Festplatten-Firmware hängen), sind die Änderungen für die erfolgreiche Ausführung dieser ausführbaren Datei gering bis gar nicht. Angenommen, Sie haben bereits eine Root-Shell geöffnet, echo b > /proc/sysrq-triggerist kein Dateisystemzugriff erforderlich.

Mikko Rantalainen
quelle
Nun, Echo ist auch eine Binärdatei, oder? Ich bin auf Situationen gestoßen, in denen ich einen Server wirklich neu starten muss und ihn wirklich benötigt, um neu gestartet zu werden und beim Herunterfahren nicht an irgendeiner Stelle hängen zu bleiben. Anstatt zu riskieren, dass Sie zum Rechenzentrum gehen müssen, geben Sie einfach echo b> / proc / sysrq-trigger aus. Aber normalerweise mache ich:$ 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
Stefan
echoist normalerweise eine eingebaute Shell, daher ist sie verfügbar, wenn Sie eine Shell-Eingabeaufforderung haben. Ja, /bin/echoexistiert auch, da nach POSIX-Regeln alle Befehle im Pfad vorhanden sein müssen, aber durch eine Shell-Implementierung ersetzt werden können, um die Leistung zu erhöhen. Das echowird so oft verwendet, dass nur sehr sehr einfache Shells es nicht implementieren. (Vergleiche help echovs. man echo)
Mikko Rantalainen