在Linux中使用fsck命令检查和修复文件系统错误

有几种情况下,您可能需要使用fsck。如果您的系统无法启动,设备(外部驱动器或存储介质)无法正常运行,或者您看到了文件损坏的证据,您会想要运行此命令。
Fsck实际上是一个 “前端”,用于一些特定的文件系统检查程序,如fsck.vfat,fsck.ext2等。这些不需要指定,但你可能会在这些更精确的命令的man页面中找到更高级的选项。
fsck命令简介
fsck命令遵循与大多数Linux命令相似的模式。
fsck [options] [filesystem]
如果未指定文件系统,则系统将分析fstab文件(/etc/fstab)以扫描设备。
您将需要以root用户身份运行该命令,或者将其与sudo一起使用。
您可以使用fdisk或df命令来列出Linux的硬盘驱动器。这样,您可以使用fsck命令指定要检查的设备。
在Linux中使用fsck命令检查和修复文件系统错误

运行fsck之前先卸载设备
不要在已安装的设备上运行fsck,您需要先卸载目标,以免损坏文件。
如果尝试在已安装的设备上运行fsck,应该会看到如下错误:
在Linux中使用fsck命令检查和修复文件系统错误

在正常,健康的驱动器上运行fsck如下所示:
在Linux中使用fsck命令检查和修复文件系统错误

当fsck接受类似的设备名称时/dev/sda,您可以选择输入UUID,以避免与安装和卸载设备混淆。UUID是分配给您设备的固定值,不会受到这些系统更改的影响。
了解fsck命令的退出代码
这是检查磁盘后可能从fsck返回的代码的列表。如果您分析一个磁盘,则退出代码将是这些代码的总和。如果在多个设备上使用fsck,它将返回两个和的按位或。
0-无错误
1-更正了文件系统错误
2-系统应重新启动
4-文件系统错误未得到纠正
8-操作错误
16-使用或语法错误
32-Fsck被用户请求取消
128-共享库错误
你可以使用echo $?命令检查最后运行命令的退出代码。
fsck命令的实际用法
现在您已经有点熟悉fsck命令,让我们看看该命令的实际用例。
修复USB磁盘和其他可移动设备
出于我们的目的,假设您已经识别出了有问题的设备/dev/sdb。
首先,您需要确保已卸下驱动器:
sudo umount /dev/sdb
现在运行fsck命令:
sudo fsck /dev/sdb
检查输出是否有任何错误。如果未显示,请使用确认退出代码echo $?。
我们还可以添加一些选项标志,以进行一些自动更正。但是这些命令尚未标准化,您应该验证文件系统类型并比较该特定手册页中的文档。
尽管如此,通常您可以使用-p允许fsck自动应用修复。
sudo fsck -p /dev/sdb
同样,-y将更正应用于任何检测到的文件系统损坏。
修复根文件系统
系统处于活动状态时,无法卸载根分区。如果您怀疑主文件系统已损坏,则必须在此处使用其他方法。
实际上,您可以使用一些不同的选项。您可以在启动时,以救援模式运行fsck或使用以恢复为主题的实时cd。
在一定数量的失败引导尝试之后,许多Linux发行版都会在启动时自动强制fsck。如果您希望自己处理事务,可以安排系统自己完成。
大多数现代Linux版本都具有一个称为tune2fs的工具。
sudo tune2fs -c 1 /dev/sda
假设您的根设备是dev/sda,这是您要输入的命令。
现在,实际发生的情况是,你改变了系统设置,使fsck每隔n次开机就会运行一次(本例中为1)。你也可以将其设置为一个标准的时间间隔。选项有天、周或月。
假设您希望fsck在启动后的任何时间运行,如果一周没有检查。您可以使用-i指定间隔,该命令将如下所示。
sudo tune2fs -i 1w /dev/sda
如果您使用的是systemd,则可以通过输入以下命令在下次启动时强制运行fsck:
fsck.mode=force
fsck.repair=yes
你可以随时查看man-pages来获取更多信息。只要在终端中使用man fsck即可。
A5互联https://www.a5idc.net/