睡在新贵脚本(新贵同步)

我已经编写了这个代码,以便在主机系统启动时自动启动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 

luc.sh是一个具有以下function的脚本:

  • prepara() – 准备环境
  • avvia() – 启动KVM
  • ferma() – closuresKVM

除了sleep命令,它工作。 我需要延迟主机系统的关机/重启操作,等待关机完成。 换句话说,我想在/KVM/luc.sh ferma命令后插入~20秒。 看起来,新贵脚本中的sleep呼叫是asynchronous的。 是否有可能在暴发户脚本进行同步调用?

是的,不知何故,睡眠对我来说都不起作用(我使用的是Ubuntu 10.04)。 我不确定下面的解决scheme是否是最好的,但似乎正在工作。

  1. 创build一个额外的upstart任务,比如post-sleep.conf(为了清楚起见添加了日志logging):

     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 
  2. 将以下内容添加到关机后需要hibernate的作业:

     post-stop script start post-sleep end script 

如果多个作业在完全closures之前需要等待,请在第一个脚本中使用实例 。 不过,我认为一个更好更强大的解决scheme就是依靠事件 。