virsh自动关闭windows虚拟机

大家都知道,这种定时任务是通过crontab来做,但是,如果你直接尝试在crontab里关机,你会发现有时候是关不掉windows虚拟机的。 这是为啥呢?这个问题困扰了我好久,因为每次我直接输入命令关机的时候,都关机成功了,我要是放到crontab里等,它也能关机, 但是我设置crontab在晚上1点关机,第二天发现,它就是没有关机。

最后发现,原来是windows有这么一个锅:在息屏之后,如果你输入 virsh shutdown --domain win 的话,它只会激活屏幕,此时 如果你输入第二次这个命令的话,就可以成功关机。

原来问题是这样:因为我每次尝试的时候,都不是息屏状态。

解决方案有两种:

  • 禁用Windows的息屏:Control Panel -> System and Security -> Power Options –> Click “Change plan Settings”. Set “Turn off the display” to Never (default is 10 minutes)

  • 更改注册表,允许息屏时关机

然后就可以用crontab来自动开关虚拟机实现自动化

# 工作日早上9点,自动开启虚拟机
0 9 * * 1-5 virsh start --domain win
# 工作日晚上18点,自动关闭虚拟机
0 18 * * 1-5 virsh shutdown --domain win

参考资料:


微信公众号
关注公众号,获得及时更新

更多文章
  • Prometheus 数据类型
  • Gin源码阅读与分析
  • 如何面试-作为面试官得到的经验
  • 自己写一个容器
  • Golang(Go语言)中实现典型的fork调用
  • 软件开发之禅---大事化小,各个击破
  • 程序员的自我修养:链接,装载与库 阅读笔记
  • Redis源码阅读与分析一:sds
  • Redis源码阅读与分析二:双链表
  • Redis源码阅读与分析三:哈希表
  • Golang runtime 源码阅读与分析
  • Golang的一些坑
  • GC 垃圾回收
  • 设计一个路由
  • Go语言性能优化实战