본문 바로가기
AWS

[AWS] nohup - EC2 SSH 접속종료시 서버 유지 방법

by lucas_owner 2023. 2. 15.

AWS (EC2) 서버 유지 방법.

- EC2에 SSH 접속이 종료 되면, 프로세스가 종료되고, 서버 또한 종료 되게 된다. (터미널 종료)

 

- 하지만 서버는 SSH 연결이 끊기더라도 켜져 있어야 한다. (SSH를 계속 연결해놓을 이유가 없다..)

 

- 백그라운드에서 실행할 수 있게 하는 nohup 명령어를 사용하여 서버를 유지 시켜 보자. 

 

*서버 유지와 더불어 React(npm), SpringBoot(Java)를 동시에 EC2 하나에서 사용 할 수 있다.(권장하지는 않는다.) 

 

* 해당 포스트에서는 Spring Boot 기반으로 작성된다. 

 

 

nohup - 사용법

 

1. 명령어 - 기본

nohup java -jar build/libs/test-0.0.1-SNAPSHOT.jar & [옵션]

- 기본 명령어는 위의 코드블럭을 참고하면된다.

- [옵션] 부분은 없어도 무방하다! 

- 명령어에 관련된 부분은 -> nohup ~ & 이다. 

  • 앞부분의 nohup, 뒷부분의 & 는 필수 이다. 

1-1. 설명 

  • ssh 연결이 종료 되어도 Spring Boot는 Back Ground 에서 동작 하게 된다. 
  • log가 보이지 않는다고 당황 하지말자! 
    • log는 기본적으로 nohup.out 파일에 저장된다.
    • 명령어를 사용하여 log를 확인 할 수 있다.

1-2. nohup log 조회

  • nohup로 백그라운드에서 어플리케이션이 실행되고 있다면 log가 보이지 않는다. log를 확인해보자.
  1. jar 파일이 실행 되고 있는 directory로 이동. 
  2. 로그 확인 명령어 사용 (cat, tail)
# 로그 조회 
$ cat nohup.out 

# 마지막 10줄 조회
$ tail -n 10 nohup.out 

# 파일의 10번째 줄 이후 부터 출력
$ tail -n +10 nohup.out

# 실시간 로그 출력 
$ tail -f nohup.out

 

1-3. 백그라운드 실행 목록 확인

  • 만약 nohup 로그 출력 명령어를 사용해도 보이지 않는다면, 백그라운드에서 어떤 작업이 이루어지는지 확인해보자. 
# 백그라운드 실행중인 프로세스 확인 
$ bg
bash: bg: job 1 already in background

# 목록 출력
$ jobs
[1]- Running nohup java -jar day-0.0.1-SNAPSHOT.jar &

 

1-4 옵션

- 옵션의 경우, 평범하게 쓰이는 1가지를 알아보도록 하자.

nohup ~ & > /dev/null

- 기본 명령어와 달라진점은 & 의 뒷부분 일것이다. 

- ' > /dev/null '

- 해당 옵션은 log 를 저장하지 않는다. 라는 옵션이다. (기본적으로는 nohup.out 파일에 log가 저장된다.)

 

 

프로세스 종료(background process kill)

- 백그라운드에서 서버를 구동 했다면 종료 하는 방법또한 알아보자. 

 

1. PID 찾기 - (PID를 이미 알고 있다면 생략 가능)

$ ps -ef | grep [실행 파일 이름]

- 예) ps -ef | grep test-0.0.1-SNAPSHOT.jar 

 

1-1 찾아야 하는 Process

  1. build/libs/ 폴더 이동.
  2. 'ps' 명령어 사용 
  3. java에 해당하는 PID 확인.

 

2. 종료 

$ sudo kill -9 [PID]

- 예) sudo kill -9 8559

반응형

댓글