1️⃣ 프로세스 만드는 이유
Spring Boot 애플리케이션이나 Java 서버를 실행한 뒤 종료할 일이 자주 생긴다.
그때마다
ps -ef
로 프로세스 목록을 확인하고, grep
으로 JAR 이름을 검색한 후, PID를 복사해서 kill
하는 방식은 매우 번거롭고 비효율적이다.따라서 이 과정을 자동화해서 스크립트 하나로 서버를 종료할 수 있게 만드는 것이 좋다.
2️⃣ pgrep
기존 방식에서는 다음처럼 여러 명령어를 조합해야 했다.
ps -ef
명령어를 사용하게 되면 파이프라인(|)
과 grep
필터와 awk
등등 여러 명령어를 사용하여 PID를 찾아야한다. ps -ef | grep myapp.jar | grep -v grep | awk '{print $2}'
이 과정을 단순하게 대체해주는 명령어가
pgrep
이다.이 과정을 생략해주는 명령어인
pgrep
를 사용하면 바로 PID를 찾을 수 있다.pgrep
은 지정한 프로세스 이름(= 실행 파일 이름)을 찾아서 PID만 출력해준다. 아래의 옵션을 이용하여 정확하게 내가 찾고자 하는 PID만 찾을 수 있다.f
: 프로세스 이름이 아니라 전체 명령어 줄을 대상으로 검색함

“전체 명령 줄"이란?
우리가 터미널에 입력한 명령 전체를 말한다.
예를 들어, 어떤 프로그램을 이렇게 실행했다면
java -jar myapp.jar
여기서 "전체 명령 줄"은 이 전체 문장이다.
java -jar *.jar
pgrep
명령어
기본적으로
pgrep
은 맨 앞에 있는 실행 파일 이름만 찾는다.
예시를 들어보겠다.java -jar *.jar
pgrep
은 여기서 java
만 보고 찾는다.
그래서 아래처럼 하면 java
프로세스 전체가 나와버려서어떤 JAR 파일을 실행 중인지 구분이 안 돼요.pgrep java
pgrep -f
는?
f
옵션을 주면pgrep
이 전체 명령어 줄을 다 본다. 즉,java -jar *.jar
전체를 보고*.jar
가 포함돼 있는지 판단해요!
pgrep -f *.jar
이렇게 하면 정확하게 내가 실행한
*.jar
을 실행한 프로세스의 PID를 찾을 수 있다.3️⃣ 종료 스크립트 작성
1. 스크립트 파일 생성
vi spring-stop.sh
vi
명령어로 spring-stop.sh
파일을 생성하고 편집기로 들어갑니다.리눅스에서는 파일 확장자가 필수는 아니지만,
.sh
확장자를 붙이면 쉘 스크립트 파일임을 쉽게 구분할 수 있어 가독성에 좋습니다.2. 스크립트 내용 작성
echo "Springboot Stop..." Spring_PID=$(pgrep -f .jar) echo $Spring_PID kill -9 $Spring_PID
해당 스크립트 내용 설명
echo "Springboot Stop..."
→ 표준 출력으로 메시지를 출력합니다. 스크립트가 실행 중임을 알릴 수 있습니다.
Spring_PID=$(pgrep -f .jar)
→ 실행 중인
.jar
프로세스의 PID를 찾아 변수 Spring_PID
에 저장합니다.→
pgrep -f
는 전체 명령어 문자열을 기준으로 검색합니다.→
.jar
외에도 정확한 JAR 파일명을 적는 것이 더 안전합니다 (예: myapp-1.0.jar
).echo $Spring_PID
→ 변수의 값을 출력합니다.
$
를 반드시 붙여야 변수의 값이 출력됩니다.kill -9 $Spring_PID
→ 해당 PID를 강제로 종료합니다.
-9
는 강제 종료(SIGKILL)를 의미합니다.참고: kill -9은 무조건 프로세스를 죽이기 때문에, 필요한 경우 kill -15 (정상 종료)도 고려해볼 수 있습니다.
4️⃣ 실행 권한 부여
1. 현재 권한 확인
ls -l spring-stop.sh
실행 권한이 없다면, 다음과 사진 처럼이 나옵니다.
rw-rw-r-- 1 ubuntu ubuntu 57 Jun 13 13:00 spring-stop.sh

2. 실행 권한 부여
chmod u+x spring-stop.sh
chmod
는 권한을 변경하는 명령어입니다.
u+x
는 사용자(user)에게 실행 권한(x)을 추가합니다.

이후에는 다음 명령어로 스크립트를 실행할 수 있습니다:
/spring-stop.sh
이 명령을 입력하면:
- “Springboot Stop…” 메시지가 출력되고,
- PID가 표시되며,
- 해당 프로세스가 강제로 종료됩니다.

Share article