Sync命令
在用reboot命令啓動unix
系統後,系統提示出錯信息,部分應用程序不能正常工做。經仔細檢查系統文件,並和初始的正確備份進行比較,發現某些文件確實被破壞了,翻來覆去找不到文件遭破壞的緣由,最後想到了寫緩存命令——sync,在reboot前沒有運行sync命令,致使了系統文件的改變而不能正常工做。 www.2cto.com
sync命令的做用是,將有關文件系統的存儲器常駐信息送入物理介質內。在暫停系統以前,好比要從新啓動機器,必定要去執行sync命令。unix系統運行經驗代表,爲確保可靠起見,應執行兩遍sync命令,這是由於sync命令完成時,並不保證信息實際寫到了磁盤上,雖然已經執行了一遍這個命令。在執行sync命令之後,要等待磁盤工做燈滅了(假定有系統工做指示燈的話),再去真正暫停機器的運行或啓動機器。
unix系統遭受破壞是隨時均可能發生的事情,所以在啓動機器或關機以前必定要運行sync命令。記住在任何狀況下,慎重地執行sync命令決不會有任何壞處 www.2cto.com
umount時間過長,sync命令的使用
有一個問題,好比 cp 一個文件到SD卡上,是否是首先先將這個文件寫到SDRAM上,而後umount的時候再將SDRAM中的內容真正寫SD卡上? 我umount的時候會過多一會纔出現終端的提示符,根據寫入文件的大小肯定 umount的時間?
後來查了一下資料,
Linux文件系統更新是一個複雜的過程,當用戶程序對文件系統進行修改之後,例如進行了寫操做,文件數據把修改記錄在內核緩衝中,在數據沒有寫到磁盤的時候,依然可以執行用戶進程,全部數據的改變都在inode的內容中獲得反映。磁盤的數據更新其實是異步進行的,頗有可能在寫操做已經完成很長時間之後才真正對磁盤的數據進行更新。
sync命令強制把磁盤緩衝的全部數據寫入磁盤,若是在沒有把磁盤緩衝區的信息寫入磁盤以前終止系統,則磁盤的文件系統就會處在一個不穩定的狀態。而在正常模式下即便沒有對分區進行umount的操做,在重啓以前系統會調用sync命令強制把磁盤緩衝的全部數據寫入磁盤,而在急救模式下必須對所掛的分區進行umount的操做,系統纔會調用sync命令強制把磁盤緩衝的全部數據寫入磁盤,請在急救模式下的朋友注意這個問題。其實「reboot -n(Don’t sync before reboot or halt)」在重啓以前不用sync命令強制把磁盤緩衝的全部數據寫入磁盤,就很能說明問題。 www.2cto.com
因此要 cp 完以後要執行 sync 命令將緩衝區的內容寫到磁盤中,而後再umount 就不會出現延時了.
經驗證,採用此方法,延遲寫入問題能夠解決