wing-ops/prediction/opendrift/shutdown.sh
jeonghyo.k 88eb6b121a feat(prediction): OpenDrift 유류 확산 시뮬레이션 통합 + CCTV/관리자 고도화
[예측]
- OpenDrift Python API 서버 및 스크립트 추가 (prediction/opendrift/)
- 시뮬레이션 상태 폴링 훅(useSimulationStatus), 로딩 오버레이 추가
- HydrParticleOverlay: deck.gl 기반 입자 궤적 시각화 레이어
- OilSpillView/LeftPanel/RightPanel: 시뮬레이션 실행·결과 표시 UI 개편
- predictionService/predictionRouter: 시뮬레이션 CRUD 및 상태 관리 API
- simulation.ts: OpenDrift 연동 엔드포인트 확장
- docs/PREDICTION-GUIDE.md: 예측 기능 개발 가이드 추가

[CCTV/항공방제]
- CCTV 오일 감지 GPU 추론 연동 (OilDetectionOverlay, useOilDetection)
- CCTV 안전관리 감지 기능 추가 (선박 출입, 침입 감지)
- oil_inference_server.py: Python GPU 추론 서버

[관리자]
- 관리자 화면 고도화 (사용자/권한/게시판/선박신호 패널)
- AdminSidebar, BoardMgmtPanel, VesselSignalPanel 신규 컴포넌트

[기타]
- DB: 시뮬레이션 결과, 선박보험 시드(1391건), 역할 정리 마이그레이션
- 팀 워크플로우 v1.6.1 동기화

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 14:55:46 +09:00

53 lines
1.6 KiB
Bash

#!/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 "종료 프로세스 완료."