Помогая разобраться в скриптовании бэшей в run-command - PullRequest
0 голосов
/ 19 декабря 2018

Я унаследовал некоторый код, который пытаюсь понять.это комбинация команд azure cli и сценариев linux bash

#!/bin/bash -e

info "Installing Dependencies"

declare -a PIDS=()

# "Deploying into the VMs"
for i in $(seq 1 $NODES_NUM); do
    THIS_VM_NAME="${VM_NAME}${i}"

    # "Check if the VM exists"
    if `az vm list -o table | grep -q "${THIS_VM_NAME}"`; then
        info "Deploying: Installing deps and Pairty, Executing for ${THIS_VM_NAME}"

        PIDS[${i}]=$!

        az vm run-command invoke --name ${THIS_VM_NAME} \
            --command-id RunShellScript \
            --resource-group ${RSC_GRP_NAME} \
            --query "output[].message | join('\n\n', @)" \
            --scripts @${TEMPLATES}/user-data.sh &

        PIDS[${i}]=$!
    fi
done

# wait for all pids
info "Waiting for Completion.."
for pid in ${PIDS[*]}; do
    wait $pid
done

Мне бы очень хотелось понять, как работает указатель,

@${TEMPLATES}/user-data.sh &

        PIDS[${i}]=$!

.

  • Я не вижу, чтобы переменная была импортирована в сценарии.
  • Файл расположен в других папках и работает чудесным образом?
  • Я также был бы признателен за указатели наPIDS означает ли это, что процессы могут выполняться одновременно?

1 Ответ

0 голосов
/ 20 декабря 2018

С тестом то же самое происходит со мной.Но две недели назад это работает хорошо.Я покажу вам кое-что:

Последний

enter image description here enter image description here

Команда и выход в порядке.А в бэкэнде скрипт должен быть таким же, как и выше.

Теперь

enter image description here enter image description here

Вы видите, что команда не устанавливает параметры в бэкэнде.Но если вы просто запустите команду оболочки с параметрами, она также будет работать хорошо.

enter image description here enter image description here

Согласно тесту,может быть, там что-то плохое случается с CLI там дней.Вы можете подождать серийные дни и затем снова запустить команду CLI.

Файл находится в других папках, и он чудесным образом работает?

Если вы имеете в виду оболочкусценария в другой папке, он также будет хорошо работать, если команда CLI будет работать как обычно.

Я также был бы признателен за указатели на PIDS. Означает ли это, что процессы могут выполняться одновременно?

Есть кое-что, на что вы должны обратить внимание.Команда CLI выполняется в Linux как процесс, поэтому она может одновременно запускать multi в бэкэнде.Но run-command просто запускает сценарий оболочки через агент с виртуальной машиной, и он просто запускает один сценарий за один раз.Вы можете получить подробности здесь .

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

Надеждаэто поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...