新贵前停脚本

我在我的Ubuntu上安装了libvirt / KVM,并且在closures机器之前,我希望它使用ACPI poweroff(virsh shutdown)closures虚拟机,然后让它停止关机至less60秒,虚拟机是一个同步一切到磁盘的机会,这是我有:

pre-stop script SHUTDOWN_LOG=/var/log/libvirt/qemu/shutdown_vms.log for RUNNING_VM in `virsh list | grep -E running | awk -F" " '{ print $2 }'` do echo "Shutting down ${RUNNING_VM} on `date`" >> $SHUTDOWN_LOG virsh shutdown ${RUNNING_VM} done echo -n "Waiting for VM's to shut down: " >> $SHUTDOWN_LOG for I in `seq 1 10` do RUNNING=`virsh list | grep running | wc -l` if [[ "$RUNNING" == "0" ]] then echo "done." >> $SHUTDOWN_LOG exit 0 else /bin/sleep 6 && echo -n " ${RUNNING} " >> $SHUTDOWN_LOG fi done echo " Cleaning up..." >> $SHUTDOWN_LOG end script 

我遇到的问题是,由于一些奇怪的原因,它永远不会回应“完成”。 即使虚拟机全部closures正常,它仍然会循环,因此停滞了60秒,或者它似乎完全忽略了睡眠,将总数写入$SHUTDOWN_LOG并在我的虚拟机同步到磁盘的过程中立即退出。

 Shutting down FreeBSD-services on Mon Aug 22 02:07:42 MDT 2011 Shutting down FreeBSD-pgsql on Mon Aug 22 02:07:42 MDT 2011 Waiting for VM's to shut down: 1 [EOF] 

日志输出是否有更好的方式从新贵login?

不幸的是,你不能从一个新贵的脚本回声,最好的select是你已经做的创build自己的日志。

如果你也想输出到系统日志,你可以使用logging器(就像在init.d中一样)在upstart中做这个,但是到目前为止,Upstartdebugging是相当苛刻的。

您也可以在预停脚本的开头添加set -x ,以通过默认的新贵日志通道(Ubuntu中的syslog)获得更多输出。