Ubuntu:由于错误= remount-ro,重新启动if / mount readonly

时间:2017-08-03 10:57:43

标签: bash ubuntu readonly mount

问题:我们通常面临ubuntu os只读安装的问题。原因很明显,如fstab中提到的errors = remount-ro。

问题:如果涉及只读安装状态,是否有任何机制可以重启设备。

尝试:我尝试编写如下脚本,由监视器监控。这可以工作,但如果脚本返回出口1,由于任何挂载点仍然只读,它会不断重启。我期望的是检查正常运行时间是否少于一天然后它不应该重启,即使任何挂载点是只读的?

root@ubuntu1404:/home/ubuntu# cat /rofscheck.sh

#!/bin/bash

now=`date`
echo "------------"
echo "start : ${now}"
up_time=`awk '{print int($1)}' /proc/uptime`

#if uptime is less than 1 day then skip test
if [ "$up_time" -lt 86400 ]; then
    echo "uptime is less ${now}, exit due to uptime"
    exit 0
fi
grep -q ' ro' /proc/mounts > /dev/null 2>&1 || exit 0

# alert watchdog that fs is readonly.
exit 1

现在在/etc/watchdog.conf下面配置完成了。

test-binary = /rofscheck.sh

要重现安装只读所有已装载的fs的问题,请运行:

$ echo u > /proc/sysrq-trigger

紧急重新安装。

1 个答案:

答案 0 :(得分:0)

这个脚本对我有用,即使它与你的很相似。 我在Ubuntu 14.04 64bit上运行它,并提供最新更新。

#!/bin/bash

now=$(date)
up_time=$(awk '{print int($1)}' /proc/uptime)
min_time=7200

#if uptime is less than 2 hours then skip test
if [ ${up_time} -lt ${min_time} ]; then
    echo "uptime is ${up_time} secs, less than ${min_time} secs (now is ${now}): exit 0 due to uptime"
    exit 0
fi

exit=$(grep ' ro,' /proc/mounts | wc -l)
if [ ${exit} -gt 0 ]; then
        exit 1
else
        exit 0
fi

请注意,我已将最短时间设置为变量,请在方便时进行调整。

小重要通知: 我在一个非常便宜的我拥有的云服务器上使用这个解决方案,我只用于测试目的。 我还使用以下命令在每次重启时设置文件系统检查:

tune2fs -c 1 /dev/sda1

我绝不会在生产环境中使用这种看门狗用法。

希望这会有所帮助。 最好的问候。