Files
owraweb/scripts/owrawww.sh

90 lines
2.0 KiB
Bash

#!/bin/bash
APP_NAME="owrawww"
APP_DIR="/home/www/owrainfo"
JAR="$APP_DIR/owrawww-0.0.1-SNAPSHOT.jar"
LOG_DIR="$APP_DIR/logs"
PID_FILE="$APP_DIR/owrawww.pid"
JAVA_HOME="/opt/jdk-21"
start() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo "[$APP_NAME] 이미 실행 중입니다. (PID: $PID)"
exit 1
else
rm -f "$PID_FILE"
fi
fi
mkdir -p "$LOG_DIR"
echo "[$APP_NAME] 시작 중..."
nohup "$JAVA_HOME/bin/java" \
-jar "$JAR" \
--spring.profiles.active=prod \
> /dev/null 2>&1 &
PID=$!
echo $PID > "$PID_FILE"
echo "[$APP_NAME] 시작됨. (PID: $PID)"
echo "[$APP_NAME] 로그: $LOG_DIR/owrawww.log"
}
stop() {
if [ ! -f "$PID_FILE" ]; then
echo "[$APP_NAME] PID 파일이 없습니다. 실행 중이 아닌 것 같습니다."
exit 1
fi
PID=$(cat "$PID_FILE")
if ! kill -0 "$PID" 2>/dev/null; then
echo "[$APP_NAME] 프로세스($PID)가 이미 종료되어 있습니다."
rm -f "$PID_FILE"
exit 0
fi
echo "[$APP_NAME] 종료 중... (PID: $PID)"
kill "$PID"
for i in $(seq 1 30); do
if ! kill -0 "$PID" 2>/dev/null; then
rm -f "$PID_FILE"
echo "[$APP_NAME] 정상 종료됨."
exit 0
fi
sleep 1
done
echo "[$APP_NAME] 강제 종료합니다."
kill -9 "$PID"
rm -f "$PID_FILE"
echo "[$APP_NAME] 강제 종료됨."
}
status() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo "[$APP_NAME] 실행 중 (PID: $PID)"
else
echo "[$APP_NAME] 중지됨 (PID 파일 잔존)"
fi
else
echo "[$APP_NAME] 중지됨"
fi
}
case "$1" in
start) start ;;
stop) stop ;;
restart) stop; sleep 2; start ;;
status) status ;;
*)
echo "사용법: $0 {start|stop|restart|status}"
exit 1
;;
esac