Amazon EC2 인스턴스가 시작되면 sh 파일 실행

Amazon EC2 인스턴스가 시작되면 sh 파일 실행

노드 서버를 시작하는 "sh" 파일이 있습니다.

달리면 잘되요

sh /var/www/init_node.sh

인스턴스가 다시 시작될 때마다 스크립트가 실행되기를 원합니다(따라서 노드 서버가 실행 중입니다).

다음과 같이 /etc/rc.local 파일에 스크립트를 추가했습니다.

sh /var/www/init_node.sh 
exit 0

그러나 인스턴스를 다시 시작하면 nodejs 서버가 실행되지 않습니다. 우분투 64 인스턴스입니다.

나는 그것이 중요하지 않다고 생각하지만, 여기 내 sh 파일의 내용이 있습니다:

cd /var/www/myproject
eval `ssh-agent -s`
ssh-add -D
ssh-add ~/.ssh/id_rsa
git stash
git pull origin master --force
forever start express.js 

또한

sh /etc/rc.local 

잘 작동해요

어떤 아이디어가 있나요?

답변1

Amazon 인스턴스의 rc.local 파일과 비슷한 문제가 있었습니다. tty가 없으면 실행을 허용하지 않는 rc.local의 스크립트에 오류가 있는 것으로 나타났습니다.

그렇다면 유사한 오류가 발생하는지 어떻게 알 수 있습니까? cloud-init를 사용하여 스크립트를 실행하세요.

내 Amazon Linux 배포판의 경우 처음으로 /etc/init.d/cloud-init-user-scripts.

이 줄을 변경하세요 /usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure

"항상"

/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure

그런 다음 디렉토리를 만듭니다 mkdir /var/lib/cloud/data/scripts. 이제 시작 시 실행하려는 스크립트를 에 복사합니다 /var/lib/cloud/data/scripts. 스크립트 실행 가능 비트가 설정되어 있는지 확인하세요.

이제 ..을 실행할 수 있습니다 . 그런 다음 오류를 sudo /etc/init.d/cloud-init-user-scripts start확인할 수 있습니다 ./var/log/cloud-init.log

관련 정보