问题:我们通常面临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
紧急重新安装。
答案 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
我绝不会在生产环境中使用这种看门狗用法。
希望这会有所帮助。 最好的问候。