折腾PVE,安装了ikuai+iStoreOS+黑裙,其中DMS安装了小雅alist超集,可能是小主机性能太差导致黑裙多次崩溃,后来就想着有没有什么办法监控VM的运行情况,经过搜索一番后有两种方案看门狗(watchdog)和脚本监控,其中看门狗(watchdog)要求硬件支持就没搞,参考文章后优化了下脚本实现
参考文章:PVE 虚拟机心跳检测并重启 - Lucien's Blog
问题1:save保存后,faile.txt文件的count数就是没有叠加
解决过程:定位问题后发现,是source的问题导致,使用 source
或 .
命令执行文件时,source
的行为是在当前 shell 环境中执行命令,所以全局声明在这个情景下是不必要的,因为 source
执行后,变量已经是当前环境的一部分了。
解决方案:将 -A
替换为 -gA
,可以直接使用 sed
完整代码
#!/bin/bash
# 脚本常量定义
QMPATH="/usr/sbin/qm"
MAX_FAILURES=3
RESET_AFTER_SUCCESS=2
FAILURE_FILE="/path/to/failure_file.txt"
# 关联数组,用于保存各虚拟机的失败次数
declare -gA failure_count
# 从文件中加载失败次数
load_failure_count() {
if [[ -f "$FAILURE_FILE" ]]; then
source "$FAILURE_FILE"
echo "Loaded failure count from $FAILURE_