본문 바로가기
Cloud

[AWS] nohup으로 배포 시 로그 확인하기 + 리눅스 명령어

by 호강하는 지해 2024. 11. 18.
728x90

 

 

 

문제 상황

java -jar [애플리케이션 파일 이름.jar]

// 예시
java -jar lotto-0.0.1-SNAPSHOT.jar

 

원격 서버에 이 명령어로 애플리케이션을 실행시키면 터미널에서 로그를 확인할 수 있지만, 일정 시간 동안 입력이 없으면 자동으로 ssh 접속이 끊기기 때문에

 

 

nohup java -jar [빌드된 jar 파일] &

// 예시
nohup java -jar lotto-0.0.1-SNAPSHOT.jar &

 

나는 이렇게 nohup을 붙여서 파일을 실행시켰었다. 그렇지만 nohup으로 실행시키면 터미널에서 로그를 확인할 수 없었다...!

 

그렇지만 내가 잘못 알고 있었던 것 !! 다 방법이 있습니다 !!!

 

 

 

nohup 간단한 설명부터 짚고 넘어가자 ❗️

 

jar 파일을 백그라운드로 실행하는 명령어

nohup [실행하고자 하는 파일명] &
  • &
    • 프로세스를 실행할 때 백그라운드에서 동작하도록 만드는 명령어
  • 백그라운드로 실행한다는 것은 무엇이지?
    • 해당 애플리케이션이 터미널 세션에 독립적으로 실행된다는 의미다. 즉, 터미널이나 세션이 종료되어도 애플리케이션이 종료되지 않고 계속 실행되는 상태
  • nohup을 붙여서 실행해주면 실행한 경로에 [nohup.out]이라는 log 파일이 생성된다.
    • 그렇기 때문에 nohup으로 실행시켜도 충분히 로그를 확인할 수 있다 !

 

 

 


해결 방법

nohup java -jar lotto-0.0.1-SNAPSHOT.jar &

위 명령어로 애플리케이션 파일을 실행시킨 뒤

 

cat nohup.out

이 명령어로 nohup 파일에 기록되는 로그를 확인할 수 있고,

 

tail -f nohup.out

이 명령어로 로그 데이터를 실시간으로 확인할 수 있다.

 

control + s : 멈춤

control + q : 다시 시작

 

나는 리눅스 환경에서 실행하다보니 파일을 직접 열어보는 것보다 명령어로 로그를 확인하였다 !

 

 

 

 

☝🏻 참고 명령어

nohup.out 파일명 변경

> 또는 >> 와 같은 리다이렉션을 이용해 다른 파일에 출력할 수 있다.

 

>은 덮어쓰기 >>은 이어쓰기

// > - 덮어쓰기
$ nohup [실행파일] > [파일] 2>&1 &

// 예시
$ nohup java -jar lotto-0.0.1-SNAPSHOT.jar > application.log 2>&1 &

이렇게 파일 명을 바꿔주었다면 바꾼 파일명으로 확인하면 된다 ~~~!

 

 

생각보다 아주 간단하게 해결 완료 !

 

 

 

참조

https://youndol1999.tistory.com/entry/Putty-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-pid-%EC%B0%BE%EC%95%84-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A3%BD%EC%9D%B4%EA%B8%B0

 

https://green-joo.tistory.com/26

728x90