Linux基礎命令---fsck

一生有你llx發表於2018-11-02

fsck

檢查或者修復指定的檔案系統,可以是裝置名、掛載點,還可以是一個ext2的label,或者是一個UUID。此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1 、語法

fsck [ 選項]  –t  systype device

fsck [-sAVRTMNP]  [-C [fd]]  [-t fstype]  [filesys...] [--]  [fs-specific-options]

 

2 、選項列表

選項

說明

-s

檢查的序列。如果有多個檔案系統需要檢查,那麼按照順序來操作。注意:e2fsck(8)預設以互動模式執行。要使e2fsck(8)在非互動式模式下執行,必須指定-p或-a選項,如果希望自動更正錯誤,則必須指定-n選項。

-t fslist

指定要檢查的檔案系統的型別。當指定-A標誌時,只檢查與fslist匹配的檔案系統。fslist引數是以逗號分隔的檔案系統和選項說明符列表。這個逗號分隔的列表中的所有檔案系統都可能以否定操作符“no”或“!”作為字首,該操作符要求只檢查fslist中未列出的檔案系統。如果fslist中的所有檔案系統都不以否定操作符作為字首,那麼將只檢查fslist中列出的檔案系統。

選項說明符可能包含在逗號分隔的fslist中。它們必須具有“opts=s-option”的格式。如果存在選項說明符,那麼只有在“/etc/fstat”的掛載選項欄位中包含s-option的檔案系統才會被檢查。如果選項說明符以否定操作符為字首,那麼只有那些沒有fs-option的檔案系統才會被選中。在它們的掛載選項欄位“/etc/ffstab中”將被檢查。例如,如果“opts=ro”出現在fslist中,那麼只會檢查“/etc/fstab”中列出的帶有ro選項的檔案系統。

為了相容Mandrake發行版,它的引導指令碼依賴於對fsck程式的未經授權的ui更改,如果在fslist中找到了一個檔案系統型別的迴圈,就會將它視為將opts=loop指定為-t選項的引數。

通常,檔案系統型別是通過在“/etc/fstab”檔案中搜尋檔案並使用相應的條目來推斷的。如果無法推斷該型別,並且只有一個檔案系統作為-t選項的引數,fsck將使用指定的檔案系統型別。如果該型別不可用,則使用預設的檔案系統型別(當前Ext 2)。

-A

遍歷“/etc/fstab”檔案,並嘗試在一次執行中檢查所有檔案系統。此選項通常來自“/etc/rc”系統初始化檔案,而不是用於檢查單個檔案系統的多個命令。除非指定了-P選項(見下文),否則將首先檢查根檔案系統。之後,將按照“/etc/fstab”檔案中fs_passno(第六個)欄位指定的順序簽入檔案系統。跳過fs_passno值為0的檔案系統,將檢查fs_passno值大於零的檔案系統。如果有多個檔案系統具有相同的通行號,fsck將嘗試並行地檢查它們,儘管它將避免在同一個物理磁碟上執行多個檔案系統檢查。

fsck 不與任何其他裝置並行檢查堆疊裝置。因此,在“/etc/fstab“檔案中非常常見的配置是將根檔案系統設定為fs_passno值為1,並將所有其他檔案系統設定為fs_passno值為2。如果由於某種原因需要避免多個檔案系統檢查並行執行,則選擇不使用此配置。例如,如果有問題的機器記憶體不足,因此過多的分頁會引起關注。

fsck 通常不會在呼叫檔案系統的檢查器之前檢查裝置是否實際存在。因此,如果檔案系統特定的檢查器返回致命錯誤,則不存在的裝置可能導致系統在引導期間進入檔案系統修復模式。“/etc/fstab”掛載選項不會失敗,可以讓fsck跳過不存在的裝置。fsck還跳過具有特殊檔案系統型別AUTO的不存在裝置。

-C [fs]

顯示檢查的進度。顯示支援這些檔案系統檢查程式的完成/進度條(目前只用於ext 2和ext 3)。Fsck將管理檔案系統檢查器,以便它們中一次只顯示一個進度條。gui前端可以指定檔案描述符fd,在這種情況下,進度條資訊將傳送到該檔案描述符。

-M

不要檢查已安裝的檔案系統,並返回安裝檔案系統的退出程式碼0。

-N

不執行檢查操作,只是演示一下

-P

設定-A標誌時,與其他檔案系統並行檢查根檔案系統。這不是世界上最安全的事情,因為如果根檔案系統懷疑e2fsck(8)可執行檔案可能被破壞了!這個選項主要是為那些不希望將根檔案系統重新劃分為小型和緊湊(這是真正正確的解決方案)的系統管理員提供的。

-R

當使用-a標誌檢查所有檔案系統時,跳過根檔案系統

-T

啟動時不要顯示標題

-V

顯示執行過程

fs-specific-options

fsck 不理解的選項被傳遞給特定於檔案系統的檢查器。這些引數不能使用引數,因為fsck無法正確猜測哪些引數可以選擇選項,哪些引數不能。後面的選項和引數被視為要傳遞給檔案系統特定檢查器的檔案系統特定選項。

請注意,fsck的設計並不是為了將任意複雜的選項傳遞給特定於檔案系統的檢查器。如果您正在做一些複雜的事情,請直接執行特定於檔案系統的檢查程式。如果您傳遞fsck一些非常複雜的選項和引數,並且它沒有按照您的預期執行,那麼就不要將它報告為bug。你幾乎肯定在做一些不該用fsck做的事。

不同檔案系統特定fsck的選項沒有標準化。如果有疑問,請查閱檔案系統特定檢查器的手冊頁。雖然沒有保證,但大多數檔案系統檢查程式都支援下列選項

-a

自動修復檔案系統。請注意e2fsck(8)只支援向後相容。此選項對映到e2fsck的-p選項,與某些檔案系統檢查器支援的-a選項不同,該選項是安全的。

-n

對於某些特定於檔案系統的檢查程式,-n選項將導致fs特定的fsck避免試圖修復任何問題,但只需將此類問題報告給stdout。然而,並不是所有特定於檔案系統的檢查程式都是如此。特別是,如果給定該選項,fsck.reiserfs(8)將不會報告任何損壞。fsck.minix(8)根本不支援-n選項。

-r

以互動方式修復檔案系統(請求確認)。注意:如果多個fsck並行執行,使用此選項通常是個壞主意。還請注意,這是e2fsck的預設行為;它僅出於向後相容性的原因支援此選項。

-y

對於某些特定於檔案系統的檢查程式,-y選項將導致fs特定的fsck總是試圖自動修復任何檢測到的檔案系統損壞。有時專家可能能夠更好地手動驅動fsck。請注意,並非所有特定於檔案系統的檢查程式都實現了此選項。特別是fsck.minix(8)和fsck.lamfs(8)不支援-y選項。

 

3 、說明

如果命令列上沒有指定任何檔案系統,並且沒有指定-A選項,fsck將預設為序列地檢查/etc/fstat中的檔案系統。fsck指令可以有以下的返回值:

,沒有錯誤。

1 ,檔案系統錯誤更正。

2 ,系統應該重啟。

4 ,系統錯誤沒有更正。

8 ,操作錯誤。

16 ,語法錯誤。

32 ,使用者取消fsck。

128 ,共享庫錯誤。

檢查多個檔案系統時返回的退出程式碼是所檢查的每個檔案系統的退出程式碼的逐位OR。

實際上,fsck只是linux下可用的各種檔案系統檢查器(fsck.fstype)的前端。檔案系統特定的檢查器首先在/sbin中搜尋,然後在/etc/fs和/etc中搜尋,最後在PATH環境變數中列出的目錄中搜尋。

 

4 、環境變數

fsck 的執行收到以下環境變數的影響:

1 )FSCK_FORCE_ALL_PARALLEL,如果設定了此環境變數,fsck將嘗試並行執行所有指定的檔案系統,而不管檔案系統是否位於同一裝置上。(這對於RAID系統或高階儲存系統(如IBM或EMC等公司銷售的儲存系統)非常有用。)請注意,fs_passno值仍被使用。

2 )FSCK_MAX_INST,這個環境變數將限制一次執行的檔案系統檢查器的最大數量。這允許具有大量磁碟的配置避免fsck一次啟動過多的檔案系統檢查器,這可能會使系統上可用的CPU和記憶體資源超載。為零,則可以生成無限數量的程式。這是當前的預設情況,但未來版本的fsck可能會嘗試根據從作業系統收集會計資料自動確定可以執行多少個檔案系統檢查。

3 )PATH,PATH環境變數用於查詢檔案系統檢查器,首先搜尋一組系統目錄:/sbin、/sbin/fs.d、/sbin/fs、/etc/fs和/etc/fs,然後搜尋路徑環境中的一組目錄。

4 )FSTAB_FILE,這個環境變數允許系統管理員覆蓋/etc/fstab檔案的標準位置,對於正在測試fsck的開發人員也很有用。

 

5 、例項

檢查sdb4

 [root@localhost ~]# [root@localhost ~]#  fsck -t swap /dev/sdb4

fsck from util-linux-ng 2.17.2

e2fsck 1.41.12 (17-May-2010)

/dev/sdb4 was not cleanly unmounted,  強制檢查 .

Resize inode not valid.   重建 <y>?

 

第一步 檢查 inode, , 和大小

第二步 檢查目錄結構

3 檢查目錄連線性

Pass 4: Checking reference counts

5 檢查簇概要資訊

Free  s count wrong for   #0 (7854, counted=7855).

處理 <y>? 

 

Free  s count wrong (15722, counted=15723).

處理 <y>? 

 

/dev/sdb4: *****  檔案系統已修改 *****

/dev/sdb4: 11/4096 files (0.0% non-contiguous), 661/16384 blocks

[root@localhost ~]# 

    


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29270124/viewspace-2218594/,如需轉載,請註明出處,否則將追究法律責任。

相關文章