我有一个用于安装和卸载 USB 驱动器的备份脚本。
我刚刚注意到它警告我:
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
我的问题:如何让它在运行 mount 命令时自动运行 e2fsck?
这就是它的样子/etc/fsck
UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38 /media/backup_disk_1 auto defaults,rw,noauto 0 3
也是如此<pass>
,3
所以我期望fsck
在需要时运行。
编辑
根据给定的答案,这就是我最终的做法:
(在 Bash 脚本中)
function fsck_disk {
UUID=$1
echo "Checking if we need to fsck $UUID"
MCOUNT=`tune2fs -l "UUID=$UUID" 2> /dev/null | sed -n '/Mount count:\s\+/s///p'`
if [ "$MCOUNT" -eq "$MCOUNT" ] 2> /dev/null
then
echo "Mount count = $MCOUNT"
if (( $MCOUNT > 30 ))
then
echo "Time to fsck"
fsck -a UUID=$UUID \
1>> output.log \
2>> error.log
else
echo "Not yet time to fsck"
fi
fi
}
fsck_disk a60b1234-c123-123e-b4d1-a4a111ab2222
答案1
根据man fstab
:
第六场(fs_passno)。 fsck(8) 程序使用该字段来确定重新引导时执行文件系统检查的顺序。根文件系统的 fs_passno 应该指定为 1,其他文件系统的 fs_passno 应该为 2。驱动器内的文件系统将按顺序检查,但不同驱动器上的文件系统将同时检查,以利用硬件中可用的并行性。如果第六个字段不存在或为零,则返回零值,并且 fsck 将假定不需要检查文件系统。
故3
为空。此外,fstab
仅对启动时间的影响不会在每次安装设备时进行检查。因此,要在引导期间进行检查,请将第 6 个字段更改为2
。如果您想检查每个安装,您可以通过简单的脚本甚至创建别名来完成(例如
alias bk_mount='fsck -a UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38 && \
mount /media/backup_disk_1'
答案2
这个警告是毫无意义的,所以你可以简单地忽略它,或者,你可以通过使用来摆脱它tune2fs -c 0 /dev/sdb
。确实没有理由在 X 安装后对文件系统进行 fsck,尤其是对于 ext3/4。这是 90 年代 ext2 新出现时的遗留问题,人们认为它只是“一个好主意”,“以防万一”。