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?

Respuestas:
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.fuente
$ 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.gzechogeneralmente 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. Elechose usa con tanta frecuencia que solo los shells muy básicos no lo implementan. (Compararhelp echovs.man echo)