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

use*_*979 5 mount fsck fstab e2fsck

我有一个安装和卸载 USB 驱动器的备份脚本。
我只是注意到它警告我:

EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
Run Code Online (Sandbox Code Playgroud)

我的问题:当运行 mount 命令时,如何让它自动运行 e2fsck?
这是它的外观/etc/fsck

UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38   /media/backup_disk_1  auto  defaults,rw,noauto  0 3
Run Code Online (Sandbox Code Playgroud)

所以<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
Run Code Online (Sandbox Code Playgroud)

Cos*_*tas 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'
Run Code Online (Sandbox Code Playgroud)