crontab中的virt-install脚本如何控制tty

时间:2015-08-15 14:35:24

标签: crontab tty libvirt

我有一个使用virt-install创建虚拟机的脚本。此脚本使用kickstart文件进行无人参与安装。它通过shell触发时工作得很好,但是当通过crontab触发时会抛出以下错误:

错误:无法在没有控制TTY的情况下运行交互式控制台

VM创建过程在后端继续,但在我的脚本中,它不会等待virt-install完成并继续执行下一个命令。我希望我的脚本等待virt-install命令完成其工作,然后转到下一个命令。有什么方法可以让我在TTY上获得一个控件或让我的脚本等待virt-install完成?

修改

这是我的脚本执行的virt-install命令(如果它可以帮助你解决问题):

virt-install --connect=qemu:///system \

--network=bridge:$BRIDGE \

$nic2 \

--initrd-inject=$tmp_ks_file \

--controller type=scsi,model=virtio-scsi \

--extra-args="ks=file:/$(basename $tmp_ks_file) console=tty0 console=ttyS0,115200" \

--name=$img_name \

--disk $libvirt_dir/$img_name.img,size=$disk \

--ram $mem \

--vcpus=2 \

--check-cpu \

--accelerate \

--hvm \

--location=$tree \

--nographics

提前致谢,

卡希夫

1 个答案:

答案 0 :(得分:0)

我终于能够通过两个步骤来解决这个问题:

  1. 首先从virt-install命令中删除“控制台”相关配置。请参阅上述命令中的extra-args。

  2. 放一些逻辑等待virt-install完成。我确实在kickstart文件的安装后部分添加了shutdown,以便在安装完所有软件包后关闭VM。然后在我的脚本中,我实际上“等待”VM进入关闭状态,然后再转到下一个命令。

  3. 这样我就可以在crontab中运行我的脚本了。它也与詹金斯合作。

    希望这可以帮助面临同样问题的人。