由于编译的 openWrt 的虚拟机不是很稳定,苦于没有时间重新折腾一个,所以采用比较暴力的手段,每天重启, openWrt 里面的重启不能完全解决遇到的问题,顾采用从 pve 中重启。

之前写过蛮多定时任务,但很多都无法执行,在 GPT 的帮助下有了最终版本

image-1679448484144

# 创建 sh 脚本
vim restart_vm.sh
#!/bin/bash

# 重启PVE中指定的虚拟机
vmid=xxx # 修改为需要重启的虚拟机ID

echo "[$(date)] 开始重启虚拟机 $vmid"

/usr/sbin/qm shutdown $vmid
sleep 10s

if /usr/sbin/qm status $vmid | grep -q 'status: stopped'; then
    echo "虚拟机 $vmid 已成功关闭"
else
    echo "虚拟机 $vmid 关闭失败"
    exit 1
fi

/usr/sbin/qm start $vmid

if /usr/sbin/qm status $vmid | grep -q 'status: running'; then
    echo "虚拟机 $vmid 已成功启动"
else
    echo "虚拟机 $vmid 启动失败"
    exit 1
fi

echo "[$(date)] 虚拟机 $vmid 重启完成"
# 保存并退出
:wq
# 赋予权限
chmod 755 restart_vm.sh

# 编辑定时任务
crontab -e

# 每天凌晨 5:30 执行命令,并将结果存储到 restart_vm.log 日志中
30 5 * * * /root/restart_vm.sh >> /root/restart_vm.log  2>&1

注意将 /usr/sbin/qm 填写好完整的 qm 路径,否则脚本中将无法执行