记一次 pve 重启虚拟机的脚本
由于编译的 openWrt 的虚拟机不是很稳定,苦于没有时间重新折腾一个,所以采用比较暴力的手段,每天重启, openWrt 里面的重启不能完全解决遇到的问题,顾采用从 pve 中重启。
之前写过蛮多定时任务,但很多都无法执行,在 GPT 的帮助下有了最终版本
# 创建 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 路径,否则脚本中将无法执行