Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在指定位置部署失败的脚本:start.sh以用户ec2用户身份运行失败,退出代码127_Linux_Bash_Amazon Ec2_Aws Code Deploy - Fatal编程技术网

Linux 在指定位置部署失败的脚本:start.sh以用户ec2用户身份运行失败,退出代码127

Linux 在指定位置部署失败的脚本:start.sh以用户ec2用户身份运行失败,退出代码127,linux,bash,amazon-ec2,aws-code-deploy,Linux,Bash,Amazon Ec2,Aws Code Deploy,我正在尝试将代码从GitHub部署到AWS Amazon中的CodeDeploy。 我有HelloWorld应用程序示例。我有appspec.yml,如下所示: os: linux files: - source: / destination: /home/ec2-user/server permissions: - object: / pattern: "**" owner: ec2-user group: ec2-user hooks: Ap

我正在尝试将代码从GitHub部署到AWS Amazon中的CodeDeploy。 我有HelloWorld应用程序示例。我有appspec.yml,如下所示:

os: linux

files:
  - source: /
    destination: /home/ec2-user/server

permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user

hooks:
  ApplicationStop:
    - location: stop.sh
      timeout: 20
      runas: ec2-user
  ApplicationStart:
    - location: start.sh
      timeout: 20
      runas: ec2-user
  ValidateService:
    - location: validate.sh
      timeout: 120
      runas: ec2-user
和buldspec.yml:


phases:
  install:
    runtime-versions:
      java: openjdk8
  build:
    commands:
      - mvn clean package --quiet
artifacts:
  discard-paths: yes
  files:
    - target/*
    - scripts/*
    - appspec.yml
start.sh



cd /home/ec2-user/server
sudo /usr/bin/java -jar -Dserver.port=80 \
    *.jar > /dev/null 2> /dev/null < /dev/null &
和validate.sh:

#!/bin/bash

echo "Waiting for 15 seconds before checking health.."
sleep 15

status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://localhost:80)
if [[ "$status_code" -ne 200 ]] ; then
  echo "App is not healthy - $status_code"
  exit 1
else
  echo "App is responding with $status_code"
  exit 0
fi

我的部署失败,错误为:

指定位置的脚本:start.sh以用户ec2用户身份运行失败,退出代码127 日志 LifecycleEvent-应用程序启动 脚本-start.sh [stderr]/usr/bin/env:bash:没有这样的文件或目录


有人能帮我一下吗

似乎您在appspec.yml中提到了start.sh的错误路径。它正在尝试在根路径中查找脚本。由于您的脚本位于“脚本”文件夹中,您必须像下面那样提及它

os: linux

files:
  - source: /
    destination: /home/ec2-user/server

permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user

hooks:
  ApplicationStop:
    - location: scripts/stop.sh
      timeout: 20
      runas: ec2-user
  ApplicationStart:
    - location: scripts/start.sh
      timeout: 20
      runas: ec2-user
  ValidateService:
    - location: scripts/validate.sh
      timeout: 120
      runas: ec2-user

我没有看到像
#这样的hashbang/bin/bash
#/usr/bin/env bash
位于start.sh的开头。还是复制粘贴错误?
os: linux

files:
  - source: /
    destination: /home/ec2-user/server

permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user

hooks:
  ApplicationStop:
    - location: scripts/stop.sh
      timeout: 20
      runas: ec2-user
  ApplicationStart:
    - location: scripts/start.sh
      timeout: 20
      runas: ec2-user
  ValidateService:
    - location: scripts/validate.sh
      timeout: 120
      runas: ec2-user