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


8

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

echo b > /proc/sysrq-trigger

维基百科说:“立即重启系统,而无需卸载或同步文件系统。”

reboot -n

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


您为什么投票决定关闭此程序?
sh-beta

测试并尝试;)但是,实际上,为什么要这样做呢?
ewwhite

我希望我被问到时能看到它。我已经将其迁移到Unix堆栈交换上,但是可惜它已经太旧了,无法迁移:(如果这仍然是一个问题,您想要一个答案,我建议在此重新发布:unix.stackexchange.com
马克·亨德森(Mark Henderson)

Answers:


9

/sbin/reboot是在文件系统中常规可执行文件。如果文件系统已崩溃(例如,文件系统驱动器挂起,SATA硬件挂起或磁盘固件挂起),则成功执行该可执行文件的更改几乎没有。另一方面,假设您已经打开了根外壳程序,echo b > /proc/sysrq-trigger则不需要任何文件系统访问。


好吧,echo也是二进制的,对吧?我偶然发现了一些情况,我确实需要重新启动服务器,并且确实需要它重新启动并且在关机期间不会卡在某个位置。因此,不必冒险去数据中心,只需发出echo b> / proc / sysrq-trigger。但通常我会:$ 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
斯特凡

echo通常是内置的shell,因此如果您具有shell提示,则可以使用它。是的,也/bin/echo存在,因为根据POSIX规则,所有命令都必须存在于路径中,但是可以由Shell实施代替以提高性能。在echo被经常用到,只有非常非常基本的炮弹没有实现它。(比较help echovs man echo。)
Mikko Rantalainen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.