reboot -n 和 echo b > /proc/sysrq-trigger 之间的区别?

reboot -n 和 echo b > /proc/sysrq-trigger 之间的区别?

在 Linux 上(具体来说,RHEL 衍生产品 CentOS 和 Fedora),有区别吗?

echo b > /proc/sysrq-trigger

根据维基百科,“立即重新启动系统,无需卸载或同步文件系统”。

reboot -n

根据 man 8 reboot,"重启或停止前不要同步。请注意,内核和存储驱动程序可能仍会同步。"这种行为实际上有什么区别吗?

答案1

/sbin/reboot是文件系统中的常规可执行文件。如果您的文件系统被挂起(例如文件系统驱动程序挂起、SATA 芯片组挂起或磁盘固件挂起),成功执行该可执行文件的机会微乎其微。另一方面,假设您已经打开了 root shell,echo b > /proc/sysrq-trigger不需要任何文件系统访问权限。

只要echo是内置的 shell,从技术上讲,它应该fork()紧接着open()内核内部虚拟文件系统,然后write()在执行这 3 个系统调用后导致系统重新启动。

相关内容