Linux排查错误的命令,在Linux中使用fsck命令检查和修复文件系统错误
fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。本篇文章分享了如何使用fsck命令检查和修复Linux文件系统错误。Linux系统带有命令行实用程序fsck来检查文件系统错误。了解如何使用它。fsck(文件系统检查)可以帮助您处理可能损坏的文件系统。该实用程序用于检查和(可选)修复文件系统。在几种情况下,
fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。本篇文章分享了如何使用fsck命令检查和修复Linux文件系统错误。
Linux系统带有命令行实用程序fsck来检查文件系统错误。了解如何使用它。
fsck(文件系统检查)可以帮助您处理可能损坏的文件系统。该实用程序用于检查和(可选)修复文件系统。
在几种情况下,您可能想使用fsck。通常,如果系统无法启动,设备(外部驱动器或存储介质)无法正常运行,或者已经看到文件损坏的迹象,则可能需要运行此命令。
Fsck实际上是许多文件系统特定的检查器(如fsck.vfat,fsck.ext2等)的“前端”。不需要指定这些检查器,但是您可以在该手册中找到更多高级选项。这些更精确的命令的页面。
fsck命令简介
fsck命令遵循与大多数Linux命令相似的模式。
fsck [options] [filesystem]
如果未指定文件系统,则系统将分析fstab文件(/etc/fstab)以扫描设备。
您将需要以root用户身份运行命令或将其与sudo一起使用。
您可以使用fdisk或df命令来列出Linux的硬盘驱动器。这样,您可以使用fsck命令指定要检查的设备。
Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 98563270 97512647 46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem
运行fsck之前先卸载设备
不要在已安装的设备上运行fsck,您需要先卸载目标,以免损坏文件。
如果尝试在已安装的设备上运行fsck,应该会看到如下错误:
chris@handbook:~$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.
在正常,健康的驱动器上运行fsck如下所示:
chris@handbook:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters
当fsck接受类似的设备名称时/dev/sda,您可以选择输入UUID,以避免与安装和卸载设备混淆。UUID是分配给您设备的固定值,不会受到这些系统更改的影响。
了解fsck命令的退出代码
这是检查磁盘后可能从fsck返回的代码的列表。如果您分析一个磁盘,则退出代码将是这些代码的总和。如果在多个设备上使用fsck,它将返回两个和的按位或。
0 - No errors
1 - File system errors corrected
2 - System should be rebooted
4 - File system errors left uncorrected
8 - Operational error
16 - Usage or syntax error
32 - Fsck canceled by user request
128 - Shared library error
您可以使用echo $?command查看上次运行命令的退出代码。
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)。您也可以将其设置为标准时间间隔。选项为dAYS,瓦特eeks,或米onths。
假设您希望fsck在启动后的任何时间运行,如果一周没有检查。您可以使用-i指定间隔,该命令将如下所示。
sudo tune2fs -i 1w /dev/sda
如果您使用的是systemd,则可以通过输入以下命令在下次启动时强制运行fsck:
fsck.mode=force
fsck.repair=yes
结论
您可以随时转到手册页获取更多信息。只需man fsck在终端中使用。
更多推荐
所有评论(0)