在远程服务器上运行自动 fsck

Gri*_*art 7 linux filesystems fsck

我有另一个关于 df 的问题,现在我得出结论,我需要运行 fsck 我的分区,我一直在阅读有关它的信息,如果可能的话,我希望得到一些建议。

情况是这样的,没有对服务器的物理访问,我想运行 fsck。

从我读到的内容来看,我只需要touch /forcefsck重新启动它就会运行 fsck。

我的问题是,在其基础上,fsck 将运行什么参数?是否需要用户输入来纠正错误等?

运行后它会保存发生了什么的日志吗?

如果这是它的运行方式,那将是完美的,无论如何在重新启动时强制执行?

fsck -v -p /machine/disk/p1 2>&1 > fscklog.txt
Run Code Online (Sandbox Code Playgroud)

他们也在这里描述了这一点:

在 ubuntu 等 debian 和 debian-derivatives 上编辑远程服务器上的 /etc/default/rcS 并设置“FSCKFIX=yes”,将“-y”添加到启动时间 fsck 也是一个好主意,所以它不会冒险远程服务器卡在等待某人登录控制台并运行 fsck。

但是在 Centos 上似乎不存在

我目前只有 ssh 访问权限,所以这就是我对它如此挑剔的原因。

这里有一些关于服务器上磁盘和挂载卷的信息:http : //pastebin.centos.org/33314

谢谢。

Gri*_*art 6

好的,所以我在 CentOS 上发现你可以这样做:

touch /forcefsck
echo -n "-ys" > /fsckoptions
Run Code Online (Sandbox Code Playgroud)

要获得 fsck 做了什么的日志,我不得不走更艰难的路线:
警告:这样做的风险由您自己承担,我不知道如果出错会产生什么影响

编辑/etc/rc.sysinit(不要忘记备份)以获得所需的行为:

从第 500 行开始(将 -C 更改为 -V 可以去掉进度条)

if [ "$BOOTUP" = "color" ]; then
       fsckoptions="-C $fsckoptions"
else
       fsckoption="-V $fsckoptions"
Run Code Online (Sandbox Code Playgroud)

从第 648 行开始,将运行 fsck 的块更改为如下所示:

outputtt="$(fsck -T -t noopts=_netdev -A $fsckoptions)"
mount -n -o remount,rw /
echo $outputtt > /var/log/fsckoutput
mount -n -o remount,ro /
Run Code Online (Sandbox Code Playgroud)

一个小好处是它不会保留新行,但在迫切需要的时候可读。
感谢所有的帮助。