我在树莓派上使用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 驱动的电池即将耗尽)笔记本电脑),并且您没有时间执行完整的系统关闭。
当您停止或重新启动系统时,操作系统会根据需要自动将内存中的数据与持久存储同步。