#!/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 ""