inblog logo
|
An's Blog
    AWS

    [AWS] 6. 종료 프로세스 만들기

    윤설안's avatar
    윤설안
    Jul 14, 2025
    [AWS] 6. 종료 프로세스 만들기
    Contents
    1️⃣ 프로세스 만드는 이유2️⃣ pgrep3️⃣ 종료 스크립트 작성4️⃣ 실행 권한 부여

    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: 프로세스 이름이 아니라 전체 명령어 줄을 대상으로 검색함
    notion image

    “전체 명령 줄"이란?

    우리가 터미널에 입력한 명령 전체를 말한다. 예를 들어, 어떤 프로그램을 이렇게 실행했다면
    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
    notion image

    2. 실행 권한 부여

    chmod u+x spring-stop.sh
    • chmod는 권한을 변경하는 명령어입니다.
    • u+x는 사용자(user)에게 실행 권한(x)을 추가합니다.
    notion image
    이후에는 다음 명령어로 스크립트를 실행할 수 있습니다:
    /spring-stop.sh
    이 명령을 입력하면:
    • “Springboot Stop…” 메시지가 출력되고,
    • PID가 표시되며,
    • 해당 프로세스가 강제로 종료됩니다.
    notion image
     
    Share article
    Contents
    1️⃣ 프로세스 만드는 이유2️⃣ pgrep3️⃣ 종료 스크립트 작성4️⃣ 실행 권한 부여

    An's Blog

    RSS·Powered by Inblog