Linux
fsck:每次使用-c檢查後文件系統都被修改了,為什麼?
我使用腳本以自動方式對 CF 卡(與 USB 讀卡器連接)進行分區和格式化。在主要過程之後,我再次使用 fsck 檢查卡。為了檢查壞塊,我還嘗試了“-c”開關,但我總是得到一個返回值!= 0 和消息“文件系統已修改”(見下文)。多次檢查同一驅動器時,我得到相同的結果…
有誰知道為什麼a)文件系統完全被修改,b)為什麼每次我檢查時都會發生這種情況,而不僅僅是在發生錯誤的情況下(如壞塊)?
這是輸出:
linux-box# fsck.ext3 -c /dev/sdx1 e2fsck 1.40.2 (12-Jul-2007) Checking for bad blocks (read-only test): done Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Volume (/dev/sdx1): ***** FILE SYSTEM WAS MODIFIED ***** Volume (/dev/sdx1): 5132/245760 files (1.2% non-contiguous), 178910/1959896 blocks
Quoth手冊頁:
-c
此選項使 e2fsck 執行 badblocks(8) 程序以查找文件系統上的任何壞塊,然後通過將它們添加到壞塊 inode 將它們標記為壞塊。如果此選項指定了兩次,則將使用非破壞性讀寫測試完成壞塊掃描。
因此,該
-c
選項寫入文件系統,fsck
解釋為“糾正錯誤”,因此返回程式碼為1
(“File system errors Corrected”)…所以,你問,為什麼
1
當你指定-n
它應該以只讀方式打開文件系統並且不做任何更改時它會返回?好吧,進一步閱讀手冊頁也揭示了這個答案:
-n 以只讀方式打開文件系統,並假設所有問題的答案都是“否”。允許以非互動方式使用 e2fsck。(注意:如果除了*-n選項之外還指定了****-c**、-l或**-L**選項,則文件系統將以讀寫方式打開,以允許更新壞塊列表*。但是,沒有其他將對文件系統進行更改。)
(換句話說:這
-n
是一個謊言!)這個
fsck.ext3
答案完全由.