fsck -
檢查並修復Linux檔案系統
fsck [
-sACVRTNP ] [
-t fstype ]
[filesys ...
] [--] [
fs-specific-options ]
fsck
通常用來檢查並適當修復一個或多個Linux檔案系統.
filesys
可以是一個裝置名(例如:
/dev/hdc1,
/dev/sdb2),
一個掛載點(例如:
/,
/usr,
/home),
或一個ext2檔案系統的磁碟標籤,
也可以是UUID指定符(例如:
UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd 或 LABEL=root).
通常,
fsck
會試著以並行的方式同時在不同的物理磁碟上執行檔案系統檢查,這樣可以減少對所有檔案系統進行檢查的時間。
如果沒有在命令列指定檔案系統,並且沒有指定
-A 選項,
fsck
將預設順序地檢查
/etc/fstab
中登記的檔案系統。這和使用
-As 選項是相同的。
fsck
退出的返回值是下列情況之和:
0 - 沒有錯誤
1 - 檔案系統有錯但已修復
2 - 系統應當重啟
4 - 檔案系統錯誤沒有修復
8 - 執行錯誤
16 - 用法或語法錯誤
32 - 使用者撤銷了fsck
操作
128 - 共享庫出錯
當檢測多個檔案系統時,退出的返回值是對每個檔案系統檢查的返回值按位或的結果。
實際上,
fsck 只是Linux
中不同的檔案系統檢查器(
fsck.
fstype)的一個前端。首先,它在
/sbin
中搜索特定檔案系統的檢查器,然後在
/etc/fs 和
/etc
中搜索,最後在 PATH
環境變數中列出的路徑中搜索。請檢視特定檔案系統的檢查器的手冊頁來獲取細節資訊。
- -s
- 順序地進行 fsck
操作。如果你要檢查多個檔案系統,並且檢查器執行在互動模式,這樣作比較有好處。(注意:
e2fsck(8)
預設是以互動方式執行的。要使
e2fsck(8)
以非互動方式執行,你必須指定
-p 和 -a
選項,如果你想要自動糾正錯誤,或
-n
選項,如果不想自動糾正錯誤。)
-
-t fslist
- 指定要檢查的檔案系統的型別。當指定了
-A 標誌時,只有 fslist
中列出的型別的檔案系統會被檢查。
fslist
引數是一個以逗號分隔的檔案系統型別列表以及選項說明符。可以在這個以逗號分隔的列表的所有檔案系統前面加上否定字首
'no' 或 '!'
來使得只有沒有列在
fslist
中的檔案系統將被檢查。如果並非
fslist
中列出的所有檔案系統都加上了否定字首,那麼只有
fslist
中列出的檔案系統將被檢查。
選項說明符也可能包含在這個以逗號分隔的列表
fslist
中。它們的格式是
opts=fs-option
。如果出現了選項說明符,那麼只有在
/etc/fstab
中它們的掛載選項欄位中不包含
fs-option
的檔案系統將被檢查。
如果選項說明符有否定字首,那麼只有在
/etc/fstab
中它們的掛載選項欄位中包含
fs-option
的檔案系統將被檢查。
例如,如果 fslist
中出現了 opts=ro
那麼只有 /etc/fstab
中,掛載選項包含 ro
的檔案系統將被檢查。
為了和Mandrake
發行版相容(它的啟動指令碼依賴於一個未經許可而對
fsck
程式使用者介面作出的改變),如果
fslist 中有一個 loop
檔案系統,它被視為指定了
opts=loop 作為 -t
選項的引數。
一般地,檔案系統型別是在
/etc/fstab 中透過搜尋與
filesys
相應的條目得到的。如果不能這樣推知型別,並且
-t
選項只有一個檔案系統引數,
fsck
將使用指定的檔案系統型別。如果不能使用這種型別,將使用預設的檔案系統型別(當前是ext2)。
- -A
- 搜尋 /etc/fstab
檔案,一次檢查所有在檔案中有定義的檔案系統。這個選項典型地用在
/etc/rc
系統初始化檔案中,而不使用多條命令來分別檢查各獨立的分割槽。
如果沒有使用 -P
選項,則根檔案系統將第一個被檢查。之後,將按
/etc/fstab 檔案中第六欄位
fs_passno
指定的順序對各檔案系統進行檢查。
fs_passno 值為0
的檔案系統將被跳過,不會被檢查。
fs_passno 值大於0
的檔案系統將被按順序檢查,
fs_passno
值最小的檔案系統將被最先檢查。
如果多個檔案系統有相同的pass號,fsck將試著並行處理這些檔案系統,儘管它不允許在同一個物理磁碟上同時執行多個檔案系統檢查程式。
因此, /etc/fstab
檔案中的一個很普遍的設定是將root檔案系統的
fs_passno
設為1,定義其它檔案系統的
fs_passno 為2。這樣就充許
fsck
程式自動以並行的方式執行檔案系統檢查,
如果這樣有好處的話。系統管理員可能會出於某些原因而不希望並行執行多個檔案系統檢查--例如,如果記憶體不夠,那麼過多的換頁會成為系統瓶頸。
- -C
- 如果檔案系統檢查器支援的話(當前只有ext2),顯示進度條。fsck
將管理各檔案系統檢查器,使得同一時間它們中只能有一個可以顯示進度條。
- -N
- 不執行,僅僅顯示將執行的操作。
- -P
- 當設定了 -A
標誌時,將並行檢查root檔案系統和其他檔案系統。這樣是世界上最不安全的做法,因為如果root檔案系統有問題,
e2fsck(8)
這樣的程式可執行檔案將被破壞!這個選項是為不想把root
檔案系統分得小而緊湊(這才是正確的做法)的系統管理員準備的。
- -R
- 當使用 -A
標誌來檢查所有檔案系統時,跳過root檔案系統
(它可能已經被掛載為可讀寫)。
- -T
- 啟動時不顯示標題。
- -V
- 產生冗餘輸出,包含所有被執行的特定檔案系統的命令。
- fs-specific-options
-
fsck
不理解的選項被傳遞給特定檔案系統的檢查器。這些選項
決不能
有引數,因為 fsck
不能判斷出哪個選項有引數,那些沒有。
- 以 --
引導的選項和引數將被當作特定檔案系統的選項傳給它的檢查器。
- 注意 fsck
沒有為傳遞任意複雜的選項給特定檔案系統的檢查器而專門設計。如果你要做複雜的操作,請直接執行特定檔案系統的檢查器。如果你傳給
fsck
極其複雜的選項和引數,它沒有按照你想要的那樣工作,
不要把它報告為一個bug!
You're almost certainly doing something that you shouldn't be doing with
fsck.
當前,標準的特定檔案系統的選項仍在改進之中。儘管不能保證,還是有下列這些選項可以被大部分檔案系統檢查器所支援。
- -a
- 不提問,自動修復檔案系統(請小心使用此選項)。注意
e2fsck(8) 支援 -a
僅僅是為了向前相容。這個選項被對映到
e2fsck 的 -p
選項,那比較安全一點,不像大多數檔案系統檢查器支援的
-a 那樣。
- -r
- 互動式地修復檔案系統錯誤(詢問確認)。注意:
如果多個 fsck
在並行執行,這不是一個好想法。還要注意
e2fsck
的預設行為;它也只為了向前相容才保留這個選項。
Theodore Ts'o (
[email protected])
/etc/fstab
fsck
程式的行為受下列環境變數影響:
- FSCK_FORCE_ALL_PARALLEL
- 如果設定了這個環境變數,
fsck
將試著並行執行所有指定的檔案系統檢查,不管這些檔案系統是不是在同一裝置上。(這對於RAID系統或者高階儲存系統比如IBM或者EMC出售的那種很有用)
- FSCK_MAX_INST
- 這個環境變數將限制同時可以執行的檔案系統檢查器的最大數量。這樣使得擁有大量磁碟的系統避免
fsck
一次啟動過多檔案系統檢查器,那樣有可能耗盡機器的CPU和記憶體資源。如果值為0,可以孵化出沒有限制的數量的程序,這是當前的預設值。將來版本的
fsck
將試著根據收集作業系統的統計資料,自動判斷應當啟動多少檔案系統檢查。
- PATH
-
PATH
環境變數用來查詢檔案系統檢查器。一些系統目錄會被最先搜尋:
/sbin, /sbin/fs.d, /sbin/fs, /etc/fs, 和
/etc. 然後才搜尋 PATH
環境變數中設定的目錄集合。
- FSTAB_FILE
- 這個環境變數允許系統管理員指定
/etc/fstab
檔案的位置。它也為
fsck
的開發者做測試之用。
fstab(5),
mkfs(8),
fsck.minix(8),
fsck.ext2(8)
或者
e2fsck(8),
fsck.xiafs(8).
袁乙鈞 <[email protected]>
2003.11.01
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh