filesystems – 在关闭linux之前是否还需要执行sync(8)?

filesystems – 在关闭linux之前是否还需要执行sync(8)?,第1张

概述我仍然看到人们建议使用同步;同步;同步;睡30;在谈论关闭或重新启动 Linux时停止咒语. 我从一开始就一直在运行Linux,虽然这是BSD 4.2 / 4.3和SunOS 4天的推荐程序,但我记不起至少在过去的十年中我必须这样做,在此期间我可能经历了几千次Linux的关机/重启. 我怀疑这是不合时宜的,因为内核无法卸载和同步根文件系统和其他关键文件系统即使在单用户模式(例如/ tmp)期间也需 我仍然看到人们建议使用同步;同步;同步;睡30;在谈论关闭或重新启动 Linux时停止咒语.

我从一开始就一直在运行linux,虽然这是BSD 4.2 / 4.3和SunOS 4天的推荐程序,但我记不起至少在过去的十年中我必须这样做,在此期间我可能经历了几千次linux的关机/重启.

我怀疑这是不合时宜的,因为内核无法卸载和同步根文件系统和其他关键文件系统即使在单用户模式(例如/ tmp)期间也需要,因此有必要明确告诉它尽可能多的数据到磁盘.

现在,如果没有在内核源代码中找到相关代码(通过http://lxr.linux.no和Google挖掘),我怀疑内核足够智能,甚至可以干净地卸载根文件系统,文件系统足够智能,可以有效地进行同步(2)在正常关机/重启/ poweorff期间卸载之前.

“sync; sync; sync”仅在文件系统无法彻底卸载(例如物理磁盘故障)或系统处于仅强制直接重启(8)的情况下才能从其中取出冻结(例如,负载太高,无法安排关机命令).

在卸载可移动设备之前,我也从不执行同步过程,也从不遇到问题.

另一个例子 – Xen允许DomU从Dom0发送一个关闭命令,这被认为是“干净关闭”,没有任何人必须登录并键入魔法同步;同步;先同步.

我是对的,还是幸运的是几千个系统停机?

解决方法 人们会同步运行的原因;在暂停之前同步是因为halt命令不会在较旧的linux上干净地关闭系统.在SYSVr4系统上执行此 *** 作的正确方法始终是告诉init移动到不同的运行级别.

BSD和SunOS 4不是SYSVr4 *** 作系统,这就是它们不同的原因. Solaris(SunOS 5)是SYSVr4,linux选择它想要使用的SYSVr4标准位.

使用halt实际上是在大多数UNIX上执行它的一种非常糟糕的方式(linux是其中一个例外),因为它实际上并不通过init脚本来执行诸如停止进程和卸载磁盘之类的事情 – 它只是停止了处理器.

如果你可以保证你永远不会使用任何类型的UNIX系统而不是linux那么你可以继续使用停止 – 如果有可能你会使用其他UNIX然后我建议养成使用习惯init _runlevel_或shutdown.

shutdown命令实际上告诉init进程更改其运行级别run level – 这样做init然后继续运行每个K * init脚本和与该运行级别关联的S * init脚本.运行级别0中的一个脚本执行文件系统的卸载.

在linux上,halt命令只调用shutdown命令,除非运行级别已经为0(关闭)或6(重新启动)anyway;所以没有损失.

使用umount卸载文件系统的 *** 作会在卸载之前将数据同步到磁盘.

如果你一直在运行同步;同步;在linux上停止你对文件系统状态一直没有问题,因为开发人员确保停止做正确的事情;但是使用它会更正确:立即关闭

总结

以上是内存溢出为你收集整理的filesystems – 在关闭linux之前是否还需要执行sync(8)?全部内容,希望文章能够帮你解决filesystems – 在关闭linux之前是否还需要执行sync(8)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存