fsck 关闭而不是启动

Die*_*anz 7 linux debian fsck scientific-linux

通常,fsck在每 30 次左右重新启动后在启动时自动执行。有时,它可能真的很慢,并且可以延迟启动半小时以上。

有什么办法可以在关机时运行 fsck 吗?(我不介意关机是否延迟。启动时间更重要。)

我想在 Debian 或 Scientific Linux 发行版中使用它。

Den*_*ker 5

虽然您可以在关机期间检查一些内容,但您无法有效地fsck在根文件系统上运行。你看,fsck要求文件系统在尝试修复之前没有被挂载。这仅在引导期间可行,同时仍从initramfs.


Sc0*_*ian 1

对于 Debian,您可以使用AutoFsck ,但不再支持该软件包(最后更新 2010 年)。所以记住这一点。

另一种方法是将 FSCK/bash 脚本放入关闭脚本中。对于 SE linux/centos 等,我将使用 chkconfig 级别 0(停止)和 6(重新启动)。chkconfig --levels 0 rc.local-shutdown on将脚本放入/etc/rc.d/init.d/. (6级重启)

对于 Debian,我会将创建脚本放在 /etc/rc6.K00scriptname 和 /etc/rc0.d/K00scriptname 中,

至于脚本,你可以使用这样的东西:

#!/bin/bash
NETFS="nonfs,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,nousbfs,noshfs,nofuse,nofuseblk"

if (( `tune2fs -l /dev/sda2 | awk '/Mount count/{print $3}'` > `tune2fs -l /dev/sda2 | awk '/Maximum mount count/{print $4-1}' ))
then /sbin/fsck -A -T -C -a -t $NETFS 2>/dev/null
fi
Run Code Online (Sandbox Code Playgroud)

这段代码不是我写的,而是archlinux论坛上的某个人写的。我还没有尝试过代码。所以也请记住这一点。

或者你可以只做一些简单的事情,比如/sbin/fsck -A -T -C -a -- -f在脚本中。