我继承了一些我想理解的代码。它是azure cli命令和linux bash脚本的组合
Out[x]
我希望指针理解
#!/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}]=$!
上的指针,这是否意味着进程可以并发运行?答案 0 :(得分:0)
通过测试,我也发生了同样的事情。但是两个星期前,它运作良好。我会给你看一些东西:
最后
命令和输出正常。而且在后端,脚本应该像上面一样。
现在
您可以看到该命令未在后端设置参数。但是,如果只使用带有参数的shell命令,它也可以很好地工作。
根据测试,也许几天以来CLI发生了一些不好的事情。您可以等待连续几天,然后再次运行CLI命令。
该文件位于另一个文件夹中,并且可以正常工作吗?
如果您是将shell脚本放在另一个文件夹中,那么如果CLI命令照常运行,它也将很好地工作。
我还要感谢PIDS上的指针,这是否意味着 进程可以并发运行吗?
有些事情要注意。 CLI命令在Linux中作为进程运行,因此它可以在后端同时运行。但是run-command
只是通过VM的代理程序运行Shell脚本,并且一次只能运行一个脚本。您可以获取详细信息here。
此外,您可以使用VM扩展名通过“运行命令”来执行您想做的事情,并且它更加可用。
希望这会对您有所帮助。