Массив Bash выполняет только первый индекс

Вы используете ядро ​​PAE, любые модули/расширения, встроенные в любое другое ядро, не будут работать. Вы должны использовать ядро, которое собираетесь использовать для сборки модулей/расширений.

Вам нужны правильные заголовки ядра и пакеты разработки, которые, как я полагаю, это:ядро ​​-PAE -devel -4.15.10 -300.fc27.i686.rpm

Убедитесь, что пакет установлен, а затем проверьте, правильно ли строятся гостевые инструменты.

2
09.03.2020, 19:17
1 ответ

Проблема заключается в том, что команда VBoxHeadlessзапускает каждую виртуальную машину как процесс переднего плана, поэтому выполнение цикла не переходит на следующую виртуальную машину, пока предыдущая не выйдет.

Для перезапуска части сценария мне пришлось использовать VBoxManage вместо VBoxHeadless для запуска машин. После внесения этого изменения все работает. Вот обновленный скрипт, который теперь загружает внешний массив для справки.

#!/bin/bash
######################
#
# Shut down and back up select VMs
#
#####################

#make new date formatted directory
sudo mkdir /mnt/md1/VirtualMachines/bak/$(date +%Y_%m_%d) |& tee -a /mnt/md1/Scripts/log_vboxBak_$(date +%Y_%m_%d).txt;
sudo chown bvserv /mnt/md1/VirtualMachines/bak/$(date +%Y_%m_%d) |& tee -a /mnt/md1/Scripts/log_vboxBak_$(date +%Y_%m_%d).txt;

#Read array of virtual machines from file
readarray -t VM < /mnt/md1/VirtualMachines/auto-start_list.txt

#loop through array of VMs
for i in "${VM[@]}"
do
# Shut down virtual machine
sudo -u bvserv VBoxManage controlvm "$i" poweroff |& tee -a /mnt/md1/Scripts/log_vboxBak_$(date +%Y_%m_%d).txt;
# Export virtual machine to dated file
sudo -u bvserv VBoxManage export "$i" -o /mnt/md1/VirtualMachines/bak/$(date +%Y_%m_%d)/"$i".ova |& tee -a /mnt/md1/Scripts/log_vboxBak_$(date +%Y_%m_%d).txt;
# Restart virtual machine
sudo -u bvserv VBoxManage startvm "$i" --type headless |& tee -a /mnt/md1/Scripts/log_vboxBak_$(date +%Y_%m_%d).txt
#echo "$i"
done

Ссылка:

3
28.04.2021, 23:21

Теги

Похожие вопросы