当检测到 ext4 错误时如何运行命令?

当检测到 ext4 错误时如何运行命令?

过去几天我遇到了一些问题。ro当检测到一些 ext4 错误时,我的根分区会随机重新挂载(只读)。

我已经安装了另一块硬盘,/mnt/files并且该目录下的所有内容都使用 Nextcloud 同步。

当根文件系统以只读方式重新挂载时,Nextcloud 开始随机删除我的数据。这不是问题,因为我总是可以从服务器上的垃圾箱中恢复文件。恢复过程需要很长时间,所以我想在根文件系统重新挂载时立即关闭 Nextcloud,以防止进一步的数据丢失。

killall nextcloud重新安装时可以运行吗ro

无论如何,我启动了实时 CD 并修复了所有检测到的错误,所以它不会再发生,但我想确保它不会再影响我的数据。

答案1

systemd如果您想每 15 分钟检查一次根文件系统是否是只读的,可以通过以下方式解决此问题:

  • 创建检查文件系统的脚本并使其可执行:
/bin/sh #!/bin/sh 复制代码

取消设置 $rootfs
取消设置 $status
rootfs=SDXn#用 sda1 替换例如。

grep -E ''$rootfs'.*\ ro' /proc/mounts 2>&1 > /dev/null
状态=$?

如果 [ $status = 0 ];
    然后
        echo“$rootfs 不正常”
        杀死所有 nextcloud
        出口 1
    别的
        echo“$rootfs 没问题”
        出口 0
  • systemd service在中创建/lib/systemd/system/
[单元]
描述=当文件系统为只读时终止 nextcloud 客户端

[服务]
类型=oneshot
ExecStart=/路径/到/script.sh
  • 创建systemd timer/lib/systemd/system/启用/启动systemctl [enable|start] name_of_file.timer
[单元]
描述=当文件系统为只读时终止 nextcloud 客户端

[定时器]
日历=*:0/15

[安装]
WantedBy=timers.target

请注意,.timer 和 .service 文件需要具有相同的名称。

相关内容