如何在 VMware ESXi 上配置每日定时关机(含虚拟机安全关闭)
如何在 VMware ESXi 上配置每日定时关机(含虚拟机安全关闭)
在日常使用 VMware ESXi 的过程中,可能会遇到需要**定时关机主机**的场景,比如:
- 主机托管在办公室,下班后无需运行
- 出于节能或数据安全考虑
- 希望自动关机保护虚拟机数据完整性
由于 ESXi 是类 Linux 系统,但又进行了高度裁剪,**默认并不支持 crontab 命令**,也没有开箱即用的图形界面任务计划功能,因此我们需要通过**手动配置 cron 文件 + 修改系统启动脚本**的方式来实现这一需求。
---
一、目标
每天北京时间 1:00 自动执行如下操作:
1. 关闭指定虚拟机
2. 安全关机宿主机 ESXi
---
二、整体思路
ESXi 的 cron 配置文件在 /var/spool/cron/crontabs/root
,但该文件是临时的,**主机重启后会被清空**。
因此我们需要:
1. 编写关机脚本(永久保存在 datastore 中)
2. 编辑 /etc/rc.local.d/local.sh
文件,在开机时自动写入 cron 任务并启动 cron 服务
3. 执行一次 /sbin/auto-backup.sh
,将开机脚本保存到持久配置中
4. 若要测试,建议先注释掉关机主机命令,只关闭虚拟机
---
三、详细步骤
### 步骤 1:编写关机脚本
路径:`/vmfs/volumes/datastore1/autoshutdown.sh`
内容如下(请替换为你自己的虚拟机 ID):
#!/bin/sh
# 关机指定虚拟机(替换成你的VMID. vim-cmd vmsvc/getallvms 查询所有已配置的虚拟机,可获得VMID)
vim-cmd vmsvc/power.off 6
# 关机宿主机
/sbin/poweroff
四、添加执行权限
chmod +x /vmfs/volumes/datastore1/autoshutdown.sh
五、配置系统启动脚本
编辑 /etc/rc.local.d/local.sh
文件,在 exit 0
之前添加如下内容:
# 杀掉已有 cron 服务
/bin/kill $(cat /var/run/crond.pid 2>/dev/null)
# 清空旧的 root 定时任务,避免重复
echo "" > /var/spool/cron/crontabs/root
# 添加定时关机任务(注意 ESXi 默认使用 UTC 时间,17:0 对应北京时间 01:00 第二天)
echo '0 17 * * * /vmfs/volumes/datastore1/autoshutdown.sh' >> /var/spool/cron/crontabs/root
# 启动 cron 服务
/usr/lib/vmware/busybox/bin/busybox crond
六、立即保存修改
/sbin/auto-backup.sh
这个命令会保存 /etc/rc.local.d/local.sh
的修改,使其重启后依然有效。
本文链接:
/archives/1751462981062
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
雕刻时光!
喜欢就支持一下吧