¿Diferencia entre reiniciar -n y echo b> / proc / sysrq-trigger?

8

En Linux (específicamente, derivados de RHEL CentOS y Fedora), ¿hay alguna diferencia?

echo b > /proc/sysrq-trigger

"Reinicie inmediatamente el sistema, sin desmontar ni sincronizar los sistemas de archivos", según Wikipedia.

reboot -n

"No sincronice antes de reiniciar o detener. Tenga en cuenta que el núcleo y los controladores de almacenamiento aún pueden sincronizarse", según el reinicio de man 8. ¿Existe realmente alguna diferencia en este comportamiento?

sh-beta
fuente
¿Por qué votarías para cerrar esto?
sh-beta
Pruébalo y pruébalo;) Pero realmente, ¿por qué haces esto?
ewwhite
Desearía haber visto esto cuando me lo pidieron; Lo migraría al intercambio de pila de Unix, pero lamentablemente es demasiado viejo para migrarlo :( Si esto sigue siendo un problema, desea una respuesta, sugeriría volver a publicar allí: unix.stackexchange.com
Mark Henderson

Respuestas:

9

El /sbin/rebootes un ejecutable regular en el sistema de archivos. Si su sistema de archivos está alojado (p. Ej., Bloqueo del controlador del sistema de archivos, bloqueo del hardware SATA o bloqueo del firmware del disco), los cambios para ejecutar con éxito ese ejecutable son escasos. Por otro lado, suponiendo que ya tiene un shell raíz abierto, echo b > /proc/sysrq-triggerno necesita ningún acceso al sistema de archivos.

Mikko Rantalainen
fuente
Bueno, echo también es binario, ¿verdad? Me he topado con situaciones en las que realmente necesito reiniciar un servidor, y realmente lo necesito para reiniciar y no quedar atascado en algún lugar durante el apagado. Entonces, en lugar de arriesgarse a tener que ir al centro de datos, simplemente emita echo b> / proc / sysrq-trigger. Pero generalmente lo hago:$ 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
echogeneralmente es un shell incorporado, por lo que está disponible si tiene un indicador de shell. Sí, también /bin/echoexiste, porque según las reglas POSIX, todos los comandos deben existir en la ruta pero pueden ser reemplazados por la implementación de shell para aumentar el rendimiento. El echose usa con tanta frecuencia que solo los shells muy básicos no lo implementan. (Comparar help echovs. man echo)
Mikko Rantalainen