터미널 창을 끄더라도 프로그램이 계속 실행되도록 만들기 전에, 포그라운드(foreground)와 백그라운드(background)의 개념이 어떤 건지부터 알아야 한다.
포그라운드(foreground)는 내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태를 뜻한다. 그러다보니 포그라운드 상태에서는 다른 프로그램을 조작할 수가 없다.
백그라운드(background)는 내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태를 의미한다. 그래서 프로그램이 어떻게 실행되고 있는 지에 대한 정보가 화면에 자동으로 출력되지는 않는다. 이런 특성 때문에 다른 명령어를 추가로 입력할 수도 있고, 새로운 프로그램을 조작할 수도 있다.
✅ 포그라운드(foreground)로 Spring Boot를 실행시켜보자.
Spring Boot 서버 실행
$ cd ~/linux-springboot/build/libs
$ java -jar linux-springboot-0.0.1-SNAPSHOT.jar
잘 작동하는 지 확인
http://{EC2 인스턴스의 Public IP 주소}:8080 주소로 접속해보자.
Spring Boot 서버를 실행시킨 채로 다른 명령어 입력해보기
내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태인 포그라운드 상태로 실행되고 있기 때문에 아무런 명령어를 입력해도 반응이 없다. 만약 내가 Spring Boot 서버를 실행시켜놓고 다른 작업을 하고 싶다면, Spring Boot 서버를 백그라운드에서 실행시켜야 한다.
✅ 백그라운드(background)로 Spring Boot를 실행시켜보자.
기존 실행되고 있던 Spring Boot 서버 종료하기
Ctrl + c로 종료시키기
Spring Boot 서버가 잘 종료됐는 지 확인하기
http://{EC2 인스턴스의 Public IP 주소}:8080 주소로 접속해보자.
Spring Boot를 백그라운드에서 실행하기
프로세스를 백그라운드에서 실행시키려면 명령어의 앞 부분에 nohup을 붙이고, 뒷 부분에 &를 붙이면 된다.