我仍然看到人们sync; sync; sync; sleep 30; halt
在谈论关闭或重新引导Linux时建议使用咒语。
自Linux诞生以来,我一直在运行Linux,尽管这是BSD 4.2 / 4.3和SunOS 4天中推荐的过程,但我不记得我至少在最近十年中必须这样做。经历了Linux的关闭/重新启动的过程可能有数千次。
我怀疑这是不合时宜的,因为即使在单用户模式下,内核也无法卸载并同步所需的根文件系统和其他关键文件系统(例如/ tmp),因此有必要明确告知它刷新尽可能多地将数据存储到磁盘。
这些天来,我还没有在内核源代码中找到相关的代码(通过http://lxr.linux.no和google进行挖掘),我怀疑内核足够聪明,甚至可以干净地卸载根文件系统,并且文件系统也足够聪明。到在正常卸载本身之前有效做同步(2)shutdown
/ reboot
/ poweorff
。
在"sync; sync; sync"
其中的文件系统不会卸载干净(如物理磁盘故障)或系统处于这样的状态,只有直接强迫重新启动(8)将它弄出来的冷冻(如负载过只在极端的情况下有必要高以安排关机命令)。
我也从未sync
在卸载可移动设备之前执行此过程,也从未遇到问题。
另一个示例-Xen允许向DomU发送shutdown
来自Dom0 的命令,这被认为是“干净关闭”,而无需任何人先登录并输入魔法sync; sync; sync
。
我是对的还是对数千次系统关闭感到幸运?