#!/bin/bash # stop_server.sh - 백그라운드 FastAPI 서버를 종료하는 스크립트 # 사용할 PID 파일 및 로그 파일 이름 정의 PID_FILE="server.pid" LOG_FILE="uvicorn.log" # ---------------------------------------------------- echo "--- FastAPI 서버 종료 스크립트 ---" # PID 파일이 존재하는지 확인 if [ ! -f "$PID_FILE" ]; then echo "오류: PID 파일 ($PID_FILE)을 찾을 수 없습니다. 서버가 실행 중이 아닐 수 있습니다." exit 1 fi # PID 파일에서 PID 읽기 PID=$(cat "$PID_FILE") # 해당 PID를 가진 프로세스가 실제로 실행 중인지 확인 if kill -0 "$PID" 2>/dev/null; then echo "PID $PID 를 가진 서버 프로세스를 종료합니다..." # -TERM 시그널을 보내 프로세스를 우아하게 종료 시도 kill -TERM "$PID" # 프로세스가 종료될 때까지 최대 10초 대기 for i in {1..10}; do if ! kill -0 "$PID" 2>/dev/null; then echo "서버 (PID $PID)가 성공적으로 종료되었습니다." break fi sleep 1 done # 10초 후에도 종료되지 않았다면 강제 종료 if kill -0 "$PID" 2>/dev/null; then echo "경고: 서버가 정상 종료되지 않아 강제 종료 (kill -9) 합니다." kill -9 "$PID" fi else echo "PID $PID 를 가진 프로세스가 실행 중이지 않습니다." fi # PID 파일 및 로그 파일 정리 rm -f "$PID_FILE" echo "PID 파일($PID_FILE)이 삭제되었습니다." # 로그 파일도 필요하면 삭제하거나 보관할 수 있습니다. # rm -f "$LOG_FILE" echo "종료 프로세스 완료."