68 lines
1.7 KiB
Bash
68 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# ============================================================
|
|
# Weibo-HotSign Linux 停止脚本
|
|
# 使用方式: chmod +x stop_linux.sh && ./stop_linux.sh
|
|
# ============================================================
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PID_DIR="${PROJECT_DIR}/.pids"
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
info() { echo -e "${GREEN}[✓]${NC} $1"; }
|
|
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " Weibo-HotSign 停止服务"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
SERVICES=("auth_service" "api_service" "frontend")
|
|
SERVICE_NAMES=("Auth Service" "API Service" "Frontend")
|
|
|
|
stopped=0
|
|
|
|
for i in "${!SERVICES[@]}"; do
|
|
name="${SERVICES[$i]}"
|
|
display="${SERVICE_NAMES[$i]}"
|
|
pidfile="${PID_DIR}/${name}.pid"
|
|
|
|
if [ -f "$pidfile" ]; then
|
|
pid=$(cat "$pidfile")
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
kill "$pid" 2>/dev/null
|
|
# 等待进程退出(最多 5 秒)
|
|
for j in $(seq 1 10); do
|
|
if ! kill -0 "$pid" 2>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 0.5
|
|
done
|
|
# 如果还没退出,强制杀
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
kill -9 "$pid" 2>/dev/null
|
|
fi
|
|
info "${display} 已停止 (PID: ${pid})"
|
|
stopped=$((stopped + 1))
|
|
else
|
|
warn "${display} 进程不存在 (PID: ${pid})"
|
|
fi
|
|
rm -f "$pidfile"
|
|
else
|
|
warn "${display} 未在运行"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
if [ $stopped -gt 0 ]; then
|
|
info "已停止 ${stopped} 个服务"
|
|
else
|
|
warn "没有正在运行的服务"
|
|
fi
|
|
echo ""
|