반응형
저는 간단한 개인 프로젝트에서 code deploy를 사용하여 배포하고 있습니다.
그런데 code deploy에서 계속 배포 실패가 되었습니다. 에러 로그는 "Script at specified location: scripts/deploy.sh failed to close STDOUT", 즉 표준 출력이 제대로 닫히지 않고 있다는 거죠.
원인
원인은 말 그대로 표준 출력이 제대로 닫히지 않고 있어서였습니다. 저는 배포 시에 로그를 기록하기 위해 아래와 같은 명령어를 사용하고 있었습니다.
nohup java -jar $REPOSITORY/$JAR_NAME &
이렇게 되면 nohup 명령어로 백그라운드 프로세스를 실행하면서, 표준 출력 및 표준 에러를 제대로 리다이렉션을 하지 않게 되어서입니다.
해결
아래와 같이 명령어를 변경해주었습니다.
nohup java -jar $REPOSITORY/$JAR_NAME > /home/ec2-user/app/nohup.out 2>&1 &
위 명령어는 표준 출력과 표준 에러를 /home/ec2-user-app/hohup.out
으로 리다이렉션해줍니다.
이때 2>&1
은 리다이렉션을 할 때 사용되는 쉘 명령어 구문입니다.
Unix 계열 OS에는 모든 입출력은 파일 디스크립터를 통해 이루어지는데, 0,1,2는 각각 표준 입력, 표준 출력, 표준 에러를 뜻합니다.
2>&1
는 표준 에러를 표준 출력과 같은 곳으로 리다이렉션하라 라는 의미입니다.
명령어를 수정해서 다시 배포하니 성공하네요. 파이프라인이 잘 작동하면 괜히 뿌듯합니다.ㅎ
반응형
'Develop > AWS' 카테고리의 다른 글
[AWS] RDS MySQL WorkBench 연결 시 unable to connect to localhost 에러 발생 (1) | 2023.07.04 |
---|---|
[AWS] VPC 이해하기 (0) | 2023.07.03 |