參考: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將內存中的數據與磁盤同步。