从命令行调用 mount 时自动运行 fsck

从命令行调用 mount 时自动运行 fsck

我有一个用于安装和卸载 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 新出现时的遗留问题,人们认为它只是“一个好主意”,“以防万一”。

相关内容