Proxmox自动关机功能配置方法详解
2026-06-18
在 Proxmox 中启用自动关机功能,可让您无需手动操作即可自动关闭主机、虚拟机或容器。该功能可通过计划任务、空闲状态或 UPS 事件来触发。此举有助于节约能源、保护数据并降低人为操作失误的风险。
什么是 Proxmox 自动关机功能?
Proxmox 自动关机功能可让您自动执行关机任务。您可通过 cron、systemd 或 UPS 工具对其进行管理。它不仅仅是一个基础的 Linux 关机操作——Proxmox 会使用 qm 和 pct 命令,以优雅方式关闭虚拟机和容器。若已安装 qemu-guest-agent,Proxmox 甚至能通知客户操作系统执行干净关机。
如果您的服务器在夜间处于空闲状态,或者您希望在备份完成后将其关闭,那么自动关机功能将是理想选择。它有助于降低功耗、明确维护时段,并避免人为失误。
方法1:使用 Cron 实现定时关机
Cron 是最简单的方法。它不会检查是否有任务正在运行,但使用方便且可靠。
例如,每天凌晨1:00关机:
0 1 * * * root /usr/sbin/shutdown -h now
先进行测试:
shutdown -h +5 “测试:5 分钟后关机”grep shutdown /var/log/syslog
虚拟机会接收 ACPI 信号并尝试执行正常关机(如果支持)。但 Cron 不会检查是否有正在进行的任务,因此正在运行的作业可能会被中断。
方法2:使用Cron + 空闲检测脚本
该脚本可在关机前检查系统活动状态,从而降低意外中断正在运行的虚拟机或任务的风险。
示例脚本 /root/shut.sh:
#!/bin/bashACTIVE_VMS=$(qm list | grep -cv stopped)ACTIVE_PCT=$(pct list | grep -cv stopped)ACTIVE_TASKS=$(pgrep -f "pvesr|zfs scrub|vzdump")if [[ $ACTIVE_VMS -eq 0 && $ACTIVE_PCT -eq 0 && -z "$ACTIVE_TASKS" ]]; then echo "$(date): System idle. Preparing to shut down." >> /var/log/auto-shut.log shutdown -h +30 "Idle state: system will shut down in 30 minutes"fi
将其设置为可执行文件并添加到 Cron:
chmod +x /root/shut.sh*/5 * * * * root /root/shut.sh
此脚本每5分钟检查一次。若无任何进程在运行,则安排系统在30分钟后关机。
方法3:systemd 定时器 + 脚本
如需更精细的控制和更完善的日志记录,建议在生产环境中使用 systemd。
脚本: /usr/local/bin/autoshutdown
#!/bin/bash正在运行的虚拟机数量=$(qm list | grep -cv stopped)正在运行的容器数量=$(pct list | grep -cv stopped)正在运行的相关任务进程数=$(pgrep -f "pvesr|zfs scrub|vzdump")if [[ $正在运行的虚拟机数量 -eq 0 && $正在运行的容器数量 -eq 0 && -z "$正在运行的相关任务进程数" ]]; then echo "$(date): 确认系统空闲。将在稍后关机。" >> /var/log/autoshutdown.log shutdown -h +10 "空闲状态:10 分钟后关机"fi
systemd 服务 /etc/systemd/system/autoshutdown.service:
[单元]描述=Proxmox 自动关机服务[服务]类型=一次性启动前执行=/bin/sleep 300启动时执行=/usr/local/bin/autoshutdown
Systemd 定时器 /etc/systemd/system/autoshutdown.timer:
[单元]描述=Proxmox 自动关机定时器[定时器]日历触发=*-*-* 23:00:00持续生效=true[安装]启用目标=timers.target
启用它:
systemctl daemon-reloadsystemctl enable --now autoshutdown.timer
注意:Type=oneshot 可防止任务并发执行。sleep 300 添加了5分钟的缓冲时间。
方法4:UPS 与 NUT 集成
断电保护在商业环境中必不可少。NUT 与 UPS 可协助您智能关闭系统。
安装 NUT:
apt install nut
配置 /etc/nut/nut.conf:
模式=网络服务器
然后编辑 /etc/nut/ups.conf 和 /etc/nut/upsmon.conf,例如:
MONITOR ups@localhost 1 monuser password slaveSHUTDOWNCMD "systemctl poweroff"
监控 UPS:
upsc ups@localhost
模拟断电:
upsmon -c fsd
在主机关闭前关闭虚拟机:
qm 关机 <ID> --timeout 60 pct 关机 <ID> --timeout 60
请确保虚拟机中已安装 qemu-guest-agent,以保证其能够正常响应。
使用 Vinchin 在自动关机后保护虚拟机
一旦自动关机功能正常运行,下一步就是确保您的虚拟机数据持续安全。
为自信地保护您的 Proxmox 环境,请考虑使用 Vinchin 备份与恢复——一款专业的、企业级虚拟机备份解决方案,支持 Proxmox VE 以及 VMware、Hyper-V、oVirt、RHV、XCP-ng、XenServer 和 OpenStack 等 15 种以上平台。
Vinchin 提供强大功能,包括永久增量备份、内置去重与压缩、虚拟机到虚拟机(V2V)迁移以及快速恢复选项。这些功能有助于减小备份数据量、加速任务执行,并简化灾难恢复流程。
简洁易用的网页控制台让您只需四个步骤即可备份 Proxmox 虚拟机:
1. 只需在主机上选择虚拟机
2. 然后选择备份目标位置
3. 选择策略
4. 最后提交任务
Vinchin 受到全球用户的信赖,以可靠性著称。立即开始使用为期15天的全功能免费试用——点击下方按钮,几分钟内即可下载并部署。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Proxmox 自动关机常见问题解答
问题1:如何排查定时器或脚本的问题?
检查 systemctl 状态和 journalctl -u autoshutdown.service。
第二季度:如果关机卡住怎么办?
使用 journalctl 检查是哪个服务停滞了。
问题3:我可以控制虚拟机的关机顺序吗?
可以——按优先级依次使用 qm shutdown 命令关闭虚拟机。
结论
Proxmox 自动关机功能有助于节约电力、保护数据并降低风险。您可通过定时任务、空闲检测或 UPS 电源触发该功能。请根据实际需求选择合适的方式,让您的系统更智能、更安全、更高效。