문제

사용자 지정 Amazon AMI(Fedora)를 생성했는데 몇 가지 스크립트를 실행한 다음 종료됩니다.

AMI의 문제점은 코드가 변경되면 AMI 인스턴스가 최신 스크립트를 실행하기 전에 이를 가져올 수 있는 방법이 있어야 한다는 것입니다.

쉘 스크립트를 작성해서 넣었습니다. /etc/init.d/nt_startup

코드를 최신 상태로 유지하기 위해 다음을 실행합니다. git pull 내 코드 저장소에 쉘 스크립트를 추가한 다음 스크립트를 실행합니다.

문제는, git pull 인스턴스가 부팅될 때 실행되지 않는 것 같지만 Python 스크립트는 정상적으로 실행됩니다.내가 무엇을 놓치고 있는지 잘 모르겠습니다 ...시작 스크립트는 다음과 같습니다.

#!/bin/bash
#
# ec2 Startup script for EC2 machines
#
# chkconfig: 345 99 02
# description: Script used to issue startup and shutdown commands.
#

if [ "$1" = "start" ]; then
 /usr/scripts/code/git_latest
 python /usr/scripts/code/process.py
 exit
fi

if [ "$1" = "stop" ]; then
#nothing
exit
fi

그만큼 /usr/scripts/code/git_latest 쉘 스크립트는 다음과 같습니다:

#pulls in the latest code from the repository
cd /usr/scripts/code
sudo git pull

최신을 내려야 해 process.py 스크립트.

이상한 점은 인스턴스에 SSH로 접속하고 시작 스크립트를 수동으로 실행하면(/etc/init.d/nt_startup "start"), git 스크립트는 잘 작동합니다.

뭔가 빠졌나요?

도움이 되었습니까?

해결책

좋아, 나는 마침내 그것을 알아 냈다. EC2 출력을 수색 한 후이 줄을 찾았습니다.

"Ntstartup 시작 : Sudo : 죄송합니다. Sudo를 실행하려면 tty가 있어야합니다."

분명히 Fedora는 비 tty sudo 명령을 잠그고 있습니다.

빠른 검색으로 해결책이되었습니다.

  1. 루트로 달리기 "Visudo"
  2. "Default 요구 사항"으로 라인을 찾고 댓글을 달아주십시오 (#Default 요구 사항)

이것이이 문제를 해결하는 다른 사람에게 도움이되기를 바랍니다.

다른 팁

/etc/rc?.d에 시작 링크를 넣어야 합니다.chkconfig(8) 또는 ntsysv(8)를 사용하면 이러한 디렉터리를 관리하는 데 도움이 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top