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

virt-install script in crontab how to control tty

我有一个使用 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. 首先从virt-install命令中移除'console'相关配置。请参阅上面命令中的额外参数。

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

这样我就可以在 crontab 中 运行 我的脚本。它也适用于詹金斯。

希望这对面临同样问题的人有所帮助。