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

sh-*_*eta 9 linux sysrq

在Linux(特别是RHEL衍生的CentOS和Fedora)上,有区别吗?

echo b > /proc/sysrq-trigger
Run Code Online (Sandbox Code Playgroud)

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

reboot -n
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*nen 10

/sbin/reboot是在文件系统中常规可执行文件。如果您的文件系统被阻塞(例如文件系统驱动程序挂起、SATA 硬件挂起或磁盘固件挂起),那么成功执行该可执行文件所需的更改几乎为零。另一方面,假设您已经打开了 root shell,echo b > /proc/sysrq-trigger则不需要任何文件系统访问权限。

  • `echo` 通常是 shell 内置命令,因此如果您有 shell 提示符,则可以使用它。是的,`/bin/echo` 也存在,因为根据 POSIX 规则,所有命令都必须存在于路径中,但可以被 shell 实现替换以提高性能。`echo` 使用得如此频繁,以至于只有非常非常基本的 shell 不实现它。(比较“help echo”与“man echo”。) (2认同)