歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux sync命令的作用

Linux sync命令的作用

日期:2017/2/28 15:32:19   编辑:Linux教程

在用reboot命令啟動unix系統後,系統提示出錯信息,部分應用程序不能正常工作。經仔細檢查系統文件,並和初始的正確備份進行比較,發現某些文件確實被破壞了,翻來覆去找不到文件遭破壞的原因,最後想到了寫緩存命令——sync,在reboot前沒有運行sync命令,導致了系統文件的改變而不能正常工作。

sync命令的作用是,將有關文件系統的存儲器常駐信息送入物理介質內。在暫停系統之前,比如要重新啟動機器,一定要去執行sync命令。unix系統運行經驗表明,為確保可靠起見,應執行兩遍sync命令,這是因為sync命令完成時,並不保證信息實際寫到了磁盤上,雖然已經執行了一遍這個命令。在執行sync命令以後,要等待磁盤工作燈滅了(假定有系統工作指示燈的話),再去真正暫停機器的運行或啟動機器。

unix系統遭受破壞是隨時都可能發生的事情,因此在啟動機器或關機之前一定要運行sync命令。記住在任何情況下,慎重地執行sync命令決不會有任何壞處

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命令強制把磁盤緩沖的所有數據寫入磁盤,就很能說明問題。

所以要 cp 完之後要執行 sync 命令將緩沖區的內容寫到磁盤中,然後再umount 就不會出現延時了.

Copyright © Linux教程網 All Rights Reserved