参考:A Step-By-Step Guide to Using the Linux sync Command
前言
数据只有被读入内存才能被CPU所处理,但是数据又常常需要由内存写回磁盘当中(例如储存的动作)。 由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入/读出,系统的性能就会受到影响。因此在Linux系统中,为了加快数据的读取速度,所以在默认的情况中, 某些已经加载内存中的数据将不会直接被写回硬盘,而是先缓存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 速度上很快。
通常,Linux都是有组织的关机。如果主机以异常的方式关闭,或者CPU以异常的方式终止工作,举例来说,比如调试内核代码或者在可能断电(例如停电或者是不小心踢到power)的情况下,sync会强制将内存中的数据写回磁盘。使用sync可以有效定降低因为意外导致数据不一致的风险。 所以,在系统关机或重新启动之前最好多运行几次sync,等到所有指示活动的LED指示灯停止闪烁在进行关机或重启。
我们熟悉的 shutdown/reboot/halt 等等命令内部也对sync进行了调用。不只root可以使用sync,普通用户也可以使用,只不过普通账户只能更新自己的磁盘数据, 不像root可以更新整个系统中的数据。
语法
sync [option] [file]
--help displays any available help and then exits
--version displays version information and exits
--data (or -d):只同步文件数据,不同步元数据
--file-system (or -f) :同步文件数据和元数据,也就是文件系统包含的数据都同步
注意事项
手动调用sync等情况不多见, 大多数情况下,sync在你执行其他命令之前运行。当你怀疑某项操作可能会破坏Linux内核的稳定性,或者预感某些不好的事情即将发生(例如,主机电池电量即将耗尽你没有时间执行完整的系统关机。)。暂停或重新启动系统时,操作系统会根据需要自动调用sync将内存中的数据与磁盘同步。