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
。
「システムを再起動する必要があります」終了コードとはどういう意味ですか?実際に意味は?
答え1
これは、スキャンの実行時に問題のファイルシステムがマウントされ、fsck
エラーを修正するにはディスク上のデータを実際に修正する必要があり、システムを再起動しないとファイルシステムを手動で再マウントできないことを意味します。
主な状況は、ルートファイルシステムでエラーが検出(および修正)される場合です。ファイルシステムをスキャンするための非常にクールなinitramfsまたはリカバリ環境がない場合は、スキャン時にルートファイルシステムを実行します(したがって読み取り専用としてマウントされます)。
パフォーマンス上の理由から、カーネルはマウントされたファイルシステムのキャッシュされたメタデータを再検証しません(fsck
マウントされたファイルシステムのカーネルを除いてディスク上のデータは何も変更しないため)。したがってfsck
、これらのメタデータの一部を変更する必要がある場合、カーネルはカーネル(ほとんどのUNIXシステムでは不可能)またはユーザーにファイルシステムをアンマウントしてから再マウントして、カーネルが変更されたメタデータを選択できるように指示します。ルートファイルシステムは実際にはシステム自体を再起動します。
答え2
これは、システムを再起動する必要があることを意味します。
fsck
実装は通常、必要な場合にのみこのコードを返すように注意してください。たとえば、e2fsck
マウント時にルートファイルシステムのエラーが修正された場合(通常確認されるまで読み取り専用でマウントされます)。外付けドライブに入れないでください。
使用している特定のチェッカーのマニュアルを確認する必要があります。たとえば、fsck.fat
同じ終了コードを使用せずに盲目的に終了コードを 2 と仮定すると、再起動すると予期しない結果が発生する可能性があります。