“同步”会等待吗?

“同步”会等待吗?

我在树莓派上使用juice4halt(一种小型超级电容UPS),但我发现时间halt太长,系统会因为欠压而断电。

所以我的目标是尽快关闭系统,最好是 5 秒。

我的想法是有一个脚本可以做到这一点,它只将重要的内容保存到持久存储中:

sync
sudo service mysql stop
sync
halt -f

我的问题是:

1)这安全吗?会sync等到更改同步,还是会调用同步并halt -f中断同步?

2)要调试/验证一切正常,是否有命令显示是否有缓冲区尚未写入磁盘?

系统:Linux ras3 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

答案1

您发布的命令将一一执行,而不是并行执行,因此只有在同步完成后才会执行halt。

如果你添加&sync,那么

sync & 
halt - f

同步将在后台运行,并且无法及时完成,因为暂停会同时运行。

总而言之,在调用暂停之前完全执行同步是安全的。

笔记:手动调用同步并不常见。大多数情况下,此命令是在您执行其他一些您怀疑可能会破坏 Linux 内核稳定性的命令之前运行的,或者如果您认为某些不好的事情即将发生(例如,您的 Linux 驱动的电池即将耗尽)笔记本电脑),并且您没有时间执行完整的系统关闭。

当您停止或重新启动系统时,操作系统会根据需要自动将内存中的数据与持久存储同步。

相关内容