我编写了这段代码来在主机系统启动时自动启动 KVM 虚拟机,并在主机系统关闭或重新启动时停止虚拟机。
start on startup
start on started networking and started qemu-kvm and started libvirt-bin
stop on runlevel [016]
kill timeout 70
expect fork
pre-start exec /KVM/luc.sh prepara
exec /KVM/luc.sh avvia
pre-stop script
/KVM/luc.sh ferma
/bin/sleep 20
end script
Run Code Online (Sandbox Code Playgroud)
luc.sh 是一个具有以下功能的脚本:
除了sleep命令之外它都可以工作。我需要延迟主机系统的关闭/重启操作以等待来宾关闭完成。换句话说,我想在/KVM/luc.sh ferma命令后插入约 20 秒的等待。sleep新贵脚本中的调用似乎是异步的。是否可以在 upstart 脚本中进行同步调用?
小智 2
是的,不知何故,睡眠对我来说也不起作用(我使用的是 Ubuntu 10.04)。我不确定以下解决方案是最好的解决方案,但它似乎有效。
创建一个额外的 upstart 任务,例如 post-sleep.conf(为了清晰起见添加了日志记录):
Run Code Online (Sandbox Code Playgroud)description "Sleep when the job finishes" task script echo "Sleeping..." | logger -t "post-sleep-job" /bin/sleep 60s echo "Done sleeping" | logger -t "post-sleep-job" end script
在关机后需要休眠的作业中添加以下内容:
Run Code Online (Sandbox Code Playgroud)post-stop script start post-sleep end script
如果多个作业需要在完全关闭之前等待,请使用第一个脚本中的实例。然而,我认为更好、更强大的解决方案是依赖events。
| 归档时间: |
|
| 查看次数: |
5670 次 |
| 最近记录: |