Linux在下一次重新引导或引导序列上强制执行fsck

时间:2020-01-09 10:41:35  来源:igfitidea点击:

我要在下次重新启动时强制fsck吗?如何在基于Linux的服务器或笔记本电脑上强制使用fsck?在Linux上是否需要为此更改任何配置文件? fsck命令用于检查和可选地修复一个或多个Linux文件系统。您不必创建或更改/修改任何文件。您需要做的只是创建一个名为/forcefsck的空文件。

fsck如何在Linux的每次启动时强制工作?

在Debian或Ubuntu Linux上,如果/forcefsck,则使用/etc/init.d/checkfs.sh(或在Ubuntu LTS v14.04 +上的/etc/init/mountall.conf)运行fsck命令。

检查/etc/init/mountall.conf文件,例如Ubuntu 14.04 LTS中的文件

script
    . /etc/default/rcS || true
    [ -f /forcefsck ] && force_fsck="--force-fsck"
    [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"
 
    # Doesn not work so well if mountall is responsible for mounting /proc, heh.
    if [ -e /proc/cmdline ]; then
        read line < /proc/cmdline
        for arg in $line; do
            case $arg in
                -q|--quiet|-v|--verbose|--debug)
                    debug_arg=$arg
                    ;;
            esac
        done < /proc/cmdline
    fi
    # set $LANG so that messages appearing in plymouth are translated
    if [ -r /etc/default/locale ]; then
        . /etc/default/locale || true
        export LANG LANGUAGE LC_MESSAGES LC_ALL
    fi
 
    exec mountall --daemon $force_fsck $fsck_fix $debug_arg

在RHEL/CentOS 6.x上,/etc/rc.sysinit文件用于运行fsck命令。
如果有一个/fsckoptions文件,则从/fsckoptions文件中加载选项。
如果有一个/forcefsck文件,则添加-f。

检查/etc/rc.sysinit文件,例如RHEL/CentOS Linux 6.x中的文件

RHEL/CentOS 6.x /etc/rc.sysinit文件

使用/forcefsck在启动时强制使用fsck

通过创建/forcefsck文件,您将强制Linux系统(或rc脚本)执行完整的文件系统检查。
首先,以root用户身份登录:

$ su 

或者

$ sudo -s

将目录更改为根(/)目录[可选]:

# cd /

创建一个名为forcefsck的文件:

# touch /forcefsck

现在,重新启动系统:

# reboot

在使用关机命令的下一次启动时启动fsce fsck(可能不适用于许多现代发行版)

-F选项在重新引导时强制fsck,以root用户身份登录,然后执行以下命令以重新引导并运行fsck:

# shutdown -rF now

上面将立即检查所有相关分区。

关于基于系统的系统的说明

上述解决方案仅适用于旧的SysVinit和早期版本的Upstart。
它不能与systemd一起使用。

systemd-fsck可以理解一个内核命令行参数:

fsck.mode =auto,force,skip之一。
控制操作模式。默认值为auto自动,并确保在文件系统检查器认为有必要时进行文件系统检查。
无条件强制执行完整文件系统检查。

skip跳过所有文件系统检查。

fsck.repair =preen,yes, no。
控制操作模式。默认值为preen,它将自动修复可以安全修复的问题。
是,将通过fsck对所有问题回答"是",而否将对所有问题回答"否"。