Home
>
AWS
>
☁️[AWS] EC2 접속을 종료해도 서버는 실행되어야 한다!
AWS
Network
☁️[AWS] EC2 접속을 종료해도 서버는 실행되어야 한다!
1️⃣ foreground와 background
-
“Foreground”와 “Background”는 Linux/Unix 기반 시스템에서 프로세스가 실행되는 방식을 설명하는 용어 입니다.
- 프로세스가 사용자의 입력과 직접적으로 연관되어 있거나, 사용자와 독립적으로 동작하는지에 따라 구분됩니다.
1️⃣ Foreground(포그라운드)
-
의미
- 현재 사용자가 작업 중인 터미널에서 직접 실행되는 프로세스입니다.
- 사용자는 해당 프로세스와 상호작용하거나 결과를 즉시 확인할 수 있습니다.
- 실행 중인 프로세스는 터미널을 점유하며, 종료되기 전까지 다른 작업을 수행할 수 없습니다.
-
특징
- 사용자가 입력을 해야 하거나 결과를 바로 확인할 때 사용.
- 프로세스가 종료되지 전까지 터미널이 점유됨.
-
예시
java -jar library-app-0.0.1-SNAPSHOT.jar
- 이 명령어를 실행하면 서버가 시작되고 로그가 터미널에 출력되며, 터미널에 해당 프로세스를 점유하게 됩니다.
2️⃣ Background(백그라운드)
-
의미
- 터미널과 독립적으로 실행되는 프로세스입니다.
- 사용자는 해당 프로세스가 실행 중인 상태에서도 다른 작업을 수행할 수 있습니다.
- 실행 중인 프로세스는 터미널에서 로그아웃하거나 종료하더라도 계속 동작할 수 있습니다.
-
특징
- 터미널과 독립적으로 작동.
- 실행 결과는 로그 파일에 기록되거나 별도로 확인 가능.
-
예시
java -jar libarary-app-0.0.1-SNAPSHOT.jar &
- 마지막의
&
기호는 프로세스를 백그라운드에서 실행하게 합니다.
- 이 상태에서 사용자는 다른 명령어를 입력할 수 있습니다.
2️⃣ Foreground와 Background의 주요 차이점.
구분 |
Foreground |
Background |
실행 방식 |
터미널에서 직접 실행. |
터미널과 독립적으로 실행. |
터미널 점유 |
터미널을 점유함. |
터미널을 점유하지 않음. |
사용자 작업 |
사용자와 상호작용 필요. |
사용자와 상호작용 불필요. |
터미널 종료 |
터미널 종료 시 프로세스 종료. |
터미널 종료 후에도 프로세스 유지. |
3️⃣ AWS EC2에서 “서버 실행 유지”와 관련
- “AWS EC2 접속을 종료해도 서버는 실행되어야 한다”라는 주제는 Foreground와 Background 실행 방식을 다루며, Background 방식으로 서버를 실행하는 것이 목적입니다.
1️⃣ 백그라운드에서 서버 실행 방법.
-
1. &를 사용.
- 명령어 실행 시
&
를 붙여 백그라운드로 실행합니다.
java -jar library-app-0.0.1-SNAPSHOT.jar &
-
2. nohup 명령어 사용.
- nohup은 터미널 종료 후에도 프로세스가 계속 실행되도록 합니다.
nohup java -jar library-app-0.0.1-SNAPSHOT.jar &
- 실행 로그는 기본적으로
nohup.out
파일에 저장됩니다.
-
3. screem 또는 tmux 도구 사용.
- 세션 관리 도구로, 터미널 세션을 백그라운드에서 유지할 수 있습니다.
screen -S my-session
java -jar library-app-0.0.1-SNAPSHOT.jar
-
세션을 종료하지 않고 나가려면 Crtl + A
후 D
를 누릅니다.
- 이와 같은 방식으로 백그라운드에서 프로세스를 실행하면, EC2와 SSH 접속을 끊더라도 서버가 지속적으로 실행됩니다.