> For the complete documentation index, see [llms.txt](https://man.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://man.bsdcn.org/man8/fsck.8.md).

# fsck(8)

`fsck` — 文件系统一致性检查和交互式修复

## 名称

`fsck`

## 概要

`fsck [-Cdfnpvy] [- | -F] [-T fstype:fsoptions] [-t fstype] [-c fstab] [special | node ...]`

## 描述

`fsck` 工具调用特定于文件系统的程序，以检查 [fstab(5)](/man5/fstab.5.md) 文件或命令行中列出的特殊设备的一致性。

它通常在自动重启期间由 **`/etc/rc`** 脚本调用。传统上，`fsck` 在文件系统挂载之前被调用，并在此时完成所有检查。如果后台检查可用，`fsck` 会被调用两次。第一次在传统时间调用，即文件系统挂载之前，使用 `-F` 标志对所有无法进行后台检查的文件系统进行检查。然后在系统进入多用户模式后第二次调用，使用 `-` 标志对所有可以进行后台检查的文件系统进行检查。与前台检查不同，后台检查是异步启动的，这样即使在正在检查的文件系统上也可以继续其他系统活动。

如果未指定文件系统，`fsck` 读取 **`/etc/fstab`** 表来确定要检查哪些文件系统。只检查 **`/etc/fstab`** 中以“rw”、“rq”或“ro”方式挂载且具有非零 pass 编号的分区。pass 编号为 1 的文件系统（通常只是根文件系统）始终逐一进行检查。

如果不在 preen 模式下，其余条目将按 pass 编号递增的顺序逐一检查。当需要与 `fsck` 交互时，这是必需的。

在 preen 模式下，pass 1 完成后，所有剩余的文件系统将按 pass 编号顺序检查，每个 pass 编号按递增顺序在每个磁盘驱动器上并行运行一个进程。

换句话说：在 preen 模式下，所有 pass 1 分区按顺序检查。接下来所有 pass 2 分区并行检查，每个磁盘驱动器一个进程。接下来所有 pass 3 分区并行检查，每个磁盘驱动器一个进程。依此类推。

每个文件系统所在的磁盘驱动器从设备名称中以数字结尾的最短前缀推断；其余字符被假定为分区和分片标识符。

如果未指定 `-t` 或 `-T` 标志，`fsck` 将尝试确定文件系统类型并调用相应的文件系统检查实用程序。如果无法检测到文件系统类型，`fsck` 将失败并显示该分区具有未知文件系统类型的消息。

选项如下：

**`-C`** 检查超级块中是否设置了“clean”标志，如果文件系统已被正确卸载并标记为 clean，则跳过文件系统检查。

**`-c`** `fstab` 指定要使用的 `fstab` 文件。

**`-d`** 调试模式。只打印命令而不执行。仅当 `fsck` 编译时支持此功能时才可用。

**`-f`** 强制检查文件系统。运行“`fsck -f`”会忽略日志并对磁盘进行全面一致性检查，因此会发现并修复日志未感知到的错误。

**`-n`** 使 `fsck` 对所有操作员问题假设“no”作为答案，但“CONTINUE?”除外。

**`-p`** 进入 preen 模式。在 preen 模式下，只会纠正一类有限的无害文件系统不一致性。如果遇到由硬件或软件故障引起的意外不一致性，检查程序将以失败退出。有关各检查程序在 preen 模式下运行的修复类型列表，请参见各个检查程序的手册页。

**`-F`** 以前台模式运行。每个文件系统的检查程序都会以 `-F` 标志调用来确定它是希望作为启动序列的一部分运行，还是能够在系统启动并运行后在后台完成其工作。非零退出码表示它希望在前台运行，随后调用检查程序。零退出码表示它能够在后台稍后运行，只打印一条延迟消息。

**`-`** 以后台模式运行。每个文件系统的检查程序都会以 `-F` 标志调用来确定它是希望作为启动序列的一部分运行，还是能够在系统启动并运行后在后台完成其工作。非零退出码表示它曾希望在前台运行（假定已经完成），因此跳过该文件系统。零退出码表示它能够在后台运行，因此以 `-` 标志调用检查程序，指示应对活动文件系统进行检查。在后台模式下运行时，一次只检查一个文件系统。注意，后台 `fsck` 仅限于检查最常见的文件系统异常。在某些情况下，某些错误可能会逃过后台 `fsck` 的检查。建议你定期以及在遇到与文件系统相关的 panic 时对系统执行前台 `fsck`。

**`-t`** `fstype` 仅对以逗号分隔的文件系统类型列表调用 `fsck`。如果列表以“no”开头，则对列表中未指定的文件系统类型调用 `fsck`。

**`-v`** 在执行命令之前打印它们。

**`-y`** 使 `fsck` 对所有操作员问题假设“yes”作为答案。

**`-T`** `fstype`:`fsoptions` 指定文件系统类型的以逗号分隔的特定选项列表，格式与 [mount(8)](/man8/mount.8.md) 相同。

## 文件

**`/etc/fstab`** 文件系统表

## 参见

[fstab(5)](/man5/fstab.5.md), fsck\_ffs(8), [fsck\_msdosfs(8)](/man8/fsck_msdosfs.8.md), [mount(8)](/man8/mount.8.md)

## 历史

`fsck` 工具出现于 4.0BSD。它在 NetBSD 1.3 中被重新实现为文件系统无关的包装器，并首次出现于 FreeBSD 5.0。此时，原始的特定于文件系统的实用程序成为 fsck\_ffs(8)。
