Bash Ubuntu ec2实例无法运行userdata脚本

Bash Ubuntu ec2实例无法运行userdata脚本,bash,amazon-web-services,ubuntu-14.04,aws-code-deploy,cloud-init,Bash,Amazon Web Services,Ubuntu 14.04,Aws Code Deploy,Cloud Init,我正在尝试执行一个脚本,该脚本需要在Ubuntu14.04EC2实例上运行,只要该实例或它在自动缩放组中的映像启动- #!/bin/bash-x REGION=`curl http://169.254.169.254/latest/dynamic/instance- identity/document|grep region|awk -F\" '{print $4}'` sudo apt-get update sudo apt-get install git-core curl zlib1

我正在尝试执行一个脚本,该脚本需要在Ubuntu14.04EC2实例上运行,只要该实例或它在自动缩放组中的映像启动-

#!/bin/bash-x
REGION=`curl http://169.254.169.254/latest/dynamic/instance-    identity/document|grep region|awk -F\" '{print $4}'`
sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
cd
wget http://ftp.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
tar -xzvf ruby-2.3.1.tar.gz
cd ruby-2.3.1/
./configure
make
sudo make install
apt-get install apache2 
cd /home/ubuntu  
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
但脚本从未运行过。我转到cloud-init-output.log文件,下面是日志详细信息-

Cloud-init v. 0.7.5 running 'modules:final' at Mon, 12 Dec 2016 15:54:20 +0000. Up 36.92 seconds.
2016-12-12 15:54:20,432 - util.py[WARNING]: Failed running     /var/lib/cloud/instance/scripts/part-001 [-]
2016-12-12 15:54:20,436 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
2016-12-12 15:54:20,436 - util.py[WARNING]: Running scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scrip$
Cloud-init v. 0.7.5 finished at Mon, 12 Dec 2016 15:54:20 +0000.     Datasource DataSourceEc2.  Up 37.11 seconds
cloudinitv。0.7.5在2016年12月12日星期一15:54:20+0000运行“模块:最终版”。上升36.92秒。
2016-12-12 15:54:20432-util.py[警告]:无法运行/var/lib/cloud/instance/scripts/part-001[-]
2016-12-12 15:54:20436-cc_scripts_user.py[警告]:无法运行模块脚本用户(在/var/lib/cloud/instance/scripts中的脚本)

2016-12-12 15:54:20436-util.py[警告]:运行脚本用户(您使用的shebang是错误的


#!/bin/bash-x
更改为
#!/bin/bash
您使用的shebang是错误的


#!/bin/bash-x
更改为
#!/bin/bash
为了测试这一点,我启动了一个AmazonLinuxEC2实例,在用户数据的顶部添加了
#!/bin/bash-x

日志说:

/bin/sh: /var/lib/cloud/instance/scripts/part-001: /bin/bash-x: bad interpreter: No such file or directory
我在没有
-x
的情况下重新启动了它,它工作得很好

所以,这绝对是亚马逊Linux出现问题的原因。Ubuntu的情况可能会有所不同


更新:根据sqlbot的建议(如下),我用
#!/bin/bash-x
(在
-x
之前的一个空格)再次尝试了一下,效果很好。

为了测试这一点,我在用户数据的顶部启动了一个带有
#!/bin/bash-x
的Amazon Linux EC2实例

日志说:

/bin/sh: /var/lib/cloud/instance/scripts/part-001: /bin/bash-x: bad interpreter: No such file or directory
我在没有
-x
的情况下重新启动了它,它工作得很好

所以,这绝对是亚马逊Linux出现问题的原因。Ubuntu的情况可能会有所不同


更新:根据sqlbot的建议(如下),我用
!/bin/bash-x
(在
-x
前面的空格)再次尝试,效果很好。

检查第一行是否是罪魁祸首:“#!/bin/bash-x”检查第一行是否是罪魁祸首:“#!/bin/bash-x”预期的值可能是
#!/bin/bash-x
,在
-x
之前有一个空格。省略空格肯定会在Ubuntu上破坏它。FWIW,
-x
选项是带有扩展的详细模式——它会导致bash在执行每一行之前,在变量插值之后,都会回显每一行。脚本在我的系统中运行得非常好然而,本地计算机在启动期间仍不能在AWS ec2上执行(userdata).用户数据脚本仅在实例首次启动时执行。它不会在后续实例启动时运行。您是否在启动新实例时传递用户数据?预期值可能是
#!/bin/bash-x
,在
-x
之前加一个空格。在Ubuntu上省略空格肯定也会使其中断。FWIW
-x
选项是带有扩展的详细模式——它使bash在执行每一行之前,在变量插值之后,都会回显每一行。该脚本在我的本地计算机上运行得很好,但是在启动过程中,它仍然没有在AWS ec2上执行(userdata).用户数据脚本仅在实例首次启动时执行。它不会在后续实例启动时运行。您是否在启动新实例时传递用户数据?