Fsck

fsck 退出狀態“系統應該重新啟動”

  • August 22, 2019

Linux 上的 fsck(8) 聯機幫助頁包括以下退出程式碼表:

  The exit code returned by fsck is the sum of the following conditions:

         0      No errors
         1      Filesystem errors corrected
         2      System should be rebooted
         4      Filesystem errors left uncorrected
         8      Operational error
         16     Usage or syntax error
         32     Checking canceled by user request
         128    Shared-library error    

退出程式碼 2 已分配給“系統應重新啟動”,因此我們可以假設它有某種用途。然而,原則上fsck可以在檢查某種對系統操作根本不重要的外部拇指驅動器後返回此退出程式碼。像這樣的非必要文件系統中的錯誤需要重新啟動似乎很荒謬,特別是如果文件系統僅被fsck.

“系統應該重新啟動”退出程式碼實際上是什麼意思?

這意味著有問題的文件系統在執行檢查時已安裝,fsck必須實際修改磁碟上的數據以修復錯誤,並且在不重新啟動系統的情況下無法手動重新安裝文件系統。

主要情況是在根文件系統上發現(並修復)錯誤。除非您有一個非常花哨的 initramfs 或恢復環境來檢查文件系統,否則您在檢查時正在執行根文件系統(因此它是以只讀方式安裝的)。

出於性能原因,核心不會為已掛載的文件系統重新驗證記憶體的元數據(因為什麼都沒有(除了fsck應該為已掛載的文件系統更改核心以外的磁碟上的數據),所以如果fsck必須修復一些元數據,它要麼需要通知核心(它不能在大多數 UNIX 系統上),要麼告訴使用者解除安裝文件系統,然後再次掛載它以讓核心獲取修改後的元數據。唯一的方法是使用根文件系統實際上是重新啟動系統本身。

引用自:https://unix.stackexchange.com/questions/536892