有时远程(通过ssh)Linux shell脚本会赢';t出口

有时远程(通过ssh)Linux shell脚本会赢';t出口,linux,bash,shell,azure,ssh,Linux,Bash,Shell,Azure,Ssh,我有一些基本的Linux shell脚本,用于在Azure中部署新的Ubuntu虚拟机 deploy.sh脚本在本地运行,它使用Azure CLI创建VM。接下来,它与新创建的VM建立ssh连接,并发送一个名为cloud-init.sh的脚本,该脚本将安装一些软件包。此脚本始终运行良好,没有问题 但是,当cloud-init.sh脚本结束时,它有时不会将控制权返回到deploy.sh脚本。它可能会立即返回,在10分钟内或永远不会 我尝试了各种方法来指示脚本已经完成(您将在下面看到它们),但没有一

我有一些基本的Linux shell脚本,用于在Azure中部署新的Ubuntu虚拟机

deploy.sh脚本在本地运行,它使用Azure CLI创建VM。接下来,它与新创建的VM建立ssh连接,并发送一个名为cloud-init.sh的脚本,该脚本将安装一些软件包。此脚本始终运行良好,没有问题

但是,当cloud-init.sh脚本结束时,它有时不会将控制权返回到deploy.sh脚本。它可能会立即返回,在10分钟内或永远不会

我尝试了各种方法来指示脚本已经完成(您将在下面看到它们),但没有一种方法能够做到这一点。有什么想法吗

下面是deploy.sh脚本中的ssh命令:

ssh -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -T -i $SSHPEM $SSHUSERNAME 'bash -s' < cloud-init.sh
echo "--------------------------------------------"
echo "cloud-init script ended at" $(date +"%T")
echo "--------------------------------------------"
exit 0
&
^D

提前感谢。

当脚本无法返回控件时,会发生什么情况?你看到那个结束的消息了吗?运行脚本的终端是否响应按键?打进去有什么用吗?
ps
是否将
ssh
进程列为仍在运行?我经常在远程脚本打开文件描述符(例如,标准输入、输出和/或错误)或激活“X”连接时看到这种情况。首先,在SSH命令上使用“-x”开关,并确保由脚本启动的所有程序都正确地重定向了标准输入、输出和错误。@EtanReisner是的,我看到了结束消息,但除非我按CTRL-C,否则不会得到命令提示。终端会响应按键,但不会执行任何操作。按enter键只会添加新行。注意,我在Windows机器上使用Putty,连接到运行Ubuntu的本地VM。我以这种方式运行所有脚本。@RTLinuxSW我将尝试这种方式,并报告它是否有效。这不是解决您问题的直接方法,但可能允许您解决问题(也许不是)。我通常认为VM扩展是定制VM的更好方法。看见