ESXi 虚拟机通过web控制台无法实现指定vm的定时重启,所以需要后台编写脚本并配置crond定时任务实现指定虚拟机的定时重启。
1,获取指定虚拟机ID
[root@localhost:~] esxcli vm process list #列出所有运行状态的虚拟机
[root@localhost:~] vim-cmd vmsvc/getallvms |grep "<vm name>" #通过虚拟名称过去虚机ID
2,重启虚拟机
[root@localhost:~] vim-cmd vmsvc/power.reboot <vm id>
3,编写重启脚本
[root@localhost:~] cat vmrebot.sh
#!/bin/bash
vim-cmd vmsvc/power.getstate 10 | grep "Powered on" #获取虚机状态
ret=$?
if [ $ret == 0 ]
then
echo "reboot the vm!"
vim-cmd vmsvc/power.reboot 10
else
echo "do nothing!"
fi
4,设置定时任务实现指定vm定时重启
ESXi 设置定时任务与Linux有些差异,定时任务需写入:/var/spool/cron/crontabs/root 文件
先对/var/spool/cron/crontabs/root 文件进行备份:
[root@localhost:~] cp /var/spool/cron/crontabs/root /var/spool/cron/crontabs/root.old
编辑/var/spool/cron/crontabs/root 文件,设置每天8:00进行重启:
[root@localhost:~] /bin/echo "0 8 * * * /bin/sh /vmrebot.sh" >> /var/spool/cron/crontabs/root
重启crond进程:
[root@localhost:~] cat /var/run/crond.pid #获取crond进程ID
2098095
[root@localhost:~] kill 2098095
[root@localhost:~] kill 2098095 #重复执行kill,确认进程已终止
sh: can't kill pid 2098095: No such process
[root@localhost:~] /usr/lib/vmware/busybox/bin/busybox crond #重新启动crond进程
[root@localhost:~] cat /var/run/crond.pid #再次查看进程ID是否更新
89121397
3239

被折叠的 条评论
为什么被折叠?



