Home > AWS > ☁️[AWS] EC2 접속을 종료해도 서버는 실행되어야 한다!

☁️[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 접속을 종료해도 서버는 실행되어야 한다”라는 주제는 ForegroundBackground 실행 방식을 다루며, 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 + AD를 누릅니다.

  • 이와 같은 방식으로 백그라운드에서 프로세스를 실행하면, EC2와 SSH 접속을 끊더라도 서버가 지속적으로 실행됩니다.