1. 포그라운드(foreground), 백그라운드(background)란?
터미널 창을 끄더라도 프로그램이 계속 실행되도록 하기 위해 포그라운드(foreground)와 백그라운드(background)의 개념을 알아야 한다.
# 포그라운드(foreground) : 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태
포그라운드 상태에서 다른 프로그램 조작 불가.
# 백그라운드(background) : 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태
프로그램이 어떻게 실행되고 있는 지에 대한 정보가 화면에 자동으로 출력되지 않기 때문에, 다른 명령어를 추가로 입력할 수 있고, 새로운 프로그램도 조작 가능.
2. 포그라운드(foreground)로 Spring Boot 실행
1) Spring Boot 서버 실행
- Ubuntu
ubuntu@ip-172-31-39-75:~$ cd linux-springboot/build/libs
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ ls
app.log linux-springboot-0.0.1-SNAPSHOT-plain.jar linux-springboot-0.0.1-SNAPSHOT.jar
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ java -jar linux-springboot-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.5.0)
2025-11-23T00:13:45.973Z INFO 378907 --- [linux-springboot] [ main] c.e.l.LinuxSpringbootApplication : Starting LinuxSpringbootApplication v0.0.1-SNAPSHOT using Java 17.0.16 with PID 378907 (/home/ubuntu/linux-springboot/build/libs/linux-springboot-0.0.1-SNAPSHOT.jar started by ubuntu in /home/ubuntu/linux-springboot/build/libs)
2025-11-23T00:13:45.982Z INFO 378907 --- [linux-springboot] [ main] c.e.l.LinuxSpringbootApplication : No active profile set, falling back to 1 default profile: "default"
2025-11-23T00:13:47.971Z INFO 378907 --- [linux-springboot] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2025-11-23T00:13:48.024Z INFO 378907 --- [linux-springboot] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-11-23T00:13:48.025Z INFO 378907 --- [linux-springboot] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.41]
2025-11-23T00:13:48.084Z INFO 378907 --- [linux-springboot] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-11-23T00:13:48.087Z INFO 378907 --- [linux-springboot] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1927 ms
2025-11-23T00:13:48.792Z INFO 378907 --- [linux-springboot] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'
2025-11-23T00:13:48.841Z INFO 378907 --- [linux-springboot] [ main] c.e.l.LinuxSpringbootApplication : Started LinuxSpringbootApplication in 3.902 seconds (process running for 4.967)
test
test
명령어를 입력해도 작동하지 않음.
2) 작동 확인
http://{EC2 인스턴스의 Public IP 주소}:8080 주소로 접속
- Ubuntu
2025-11-23T00:16:46.481Z INFO 378907 --- [linux-springboot] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-11-23T00:16:46.482Z INFO 378907 --- [linux-springboot] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2025-11-23T00:16:46.483Z INFO 378907 --- [linux-springboot] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms

3) Spring Boot 서버를 실행시킨 채로 다른 명령어 입력
포그라운드 상태이기 때문에 명령어 입력해도 작동하지 않는다. Spring Boot 서버를 실행시켜놓고 다른 작업을 하고 싶다면, Spring Boot 서버를 백그라운드에서 실행시켜야 한다.
3. 백그라운드(background)로 Spring Boot 실행
1) 기존에 실행 중인 Spring Boot 서버 종료
Ctrl + c 로 종료시키기
- Ubuntu
^C2025-11-23T00:22:02.067Z INFO 378907 --- [linux-springboot] [ionShutdownHook] o.s.b.w.e.tomcat.GracefulShutdown : Commencing graceful shutdown. Waiting for active requests to complete
2025-11-23T00:22:02.078Z INFO 378907 --- [linux-springboot] [tomcat-shutdown] o.s.b.w.e.tomcat.GracefulShutdown : Graceful shutdown complete
2) Spring Boot 서버 종료 확인
http://{EC2 인스턴스의 Public IP 주소}:8080 주소로 접속

3) Spring Boot를 백그라운드에서 실행
프로세스를 백그라운드에서 실행시키려면 명령어의 앞 부분에 nohup 을 붙이고, 뒷 부분에 & 를 붙이면 된다.
- Ubuntu
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ ls
app.log linux-springboot-0.0.1-SNAPSHOT-plain.jar linux-springboot-0.0.1-SNAPSHOT.jar
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ nohup java -jar linux-springboot-0.0.1-SNAPSHOT.jar &
[1] 378982
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ nohup: ignoring input and appending output to 'nohup.out'
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ ls
app.log linux-springboot-0.0.1-SNAPSHOT-plain.jar linux-springboot-0.0.1-SNAPSHOT.jar nohup.out
nohup java -jar linux-springboot-0.0.1-SNAPSHOT.jar & 명령어 입력 후 키보드 Enter 를 치면 새로운 명령어를 입력할 수 있다.
4) Spring Boot 서버 실행 확인
#1 IP 주소로 접속
http://{EC2 인스턴스의 Public IP 주소}:8080 주소로 접속시 다시 접속이 되는 것을 확인할 수 있다.
#2 리눅스 명령어로 확인
- Ubuntu
ubuntu@ip-172-31-39-75:~/linux-springboot/build/libs$ ps aux | grep java
ubuntu 378982 2.7 15.0 2785484 141228 pts/0 Sl 00:29 0:10 java -jar linux-springboot-0.0.1-SNAPSHOT.jar
ubuntu 379038 0.0 0.2 7076 2204 pts/0 S+ 00:35 0:00 grep --color=auto java
백그라운드로 서버를 실행시켰기 때문에, 같은 터미널 창에서 명령어를 추가로 입력할 수 있었다.
5. 터미널 창을 끄더라도 잘 작동하는 지 확인
1) IP 주소로 접속
http://{EC2 인스턴스의 Public IP 주소}:8080 주소로 접속시 다시 접속이 되는 것을 확인할 수 있다.
2) 터미널 창 새로 켜서 리눅스 명령어로 확인
- Ubuntu
ubuntu@ip-172-31-39-75:~$ ps aux | grep java
ubuntu 378982 1.5 14.6 2785484 137240 ? Sl 00:29 0:11 java -jar linux-springboot-0.0.1-SNAPSHOT.jar
ubuntu 379436 0.0 0.2 7076 2092 pts/0 S+ 00:40 0:00 grep --color=auto java
6. 정리
서버를 실행시킬 때 24시간 내내 터미널 창을 켜놓을 수 없기 때문에, 서버 실행 후 터미널 창을 끄더라도 프로세스가 계속 실행되어야 한다. 이 때, 아래 명령어를 활용하여 백그라운드에서 프로세스를 실행한다.
# nohup [프로그램을 실행하는 명령어] & : 백그라운드에서 프로세스를 실행
참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90%EB%8F%84-%EC%9D%B4%ED%95%B4%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%9E%85
비전공자도 이해할 수 있는 리눅스 입문/실전| JSCODE 박재성 - 인프런 강의
현재 평점 5.0점 수강생 292명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 '리눅스 입문' 강의를 만들어봤습니다! 리눅스를 처음 배우시는 분, Per
www.inflearn.com
'강의 실습 > 비전공자도 이해할 수 있는 리눅스 입문 실전' 카테고리의 다른 글
| 특정 포트 번호에 실행되고 있는 프로세스 조회하기 / 포트 충돌 해결하기 (lsof) (0) | 2025.11.25 |
|---|---|
| 백그라운드에서 실행되고 있는 프로세스의 로그 확인하는 법 (nohup) (0) | 2025.11.24 |
| [실습] 실행시킨 Spring Boot 프로세스를 조회하고 종료해보기 (0) | 2025.11.20 |
| 리눅스에서 실행 중인 프로세스 조회하기 / 종료하기 (ps, kill) (0) | 2025.11.19 |
| [실습] Spring Boot 서버가 출력하는 로그를 파일로 남기기 (1) | 2025.11.13 |
댓글