diff --git a/scripts/test-env/start-all.sh b/scripts/test-env/start-all.sh index 7d7f7344..c688d6e6 100755 --- a/scripts/test-env/start-all.sh +++ b/scripts/test-env/start-all.sh @@ -12,6 +12,11 @@ start_service() { local name="$1"; local jar="$2"; local port="$3" local opts="${4:-$JAVA_OPTS_LIGHT}"; shift 4 + if pgrep -f "$(basename "$jar")" >/dev/null 2>&1; then + log_warn " $name already running ($(pgrep -f "$(basename "$jar")" | tr '\n' ' ')) — skipping" + return 0 + fi + log_info "Starting $name (port $port)..." if [[ ! -f "$jar" ]]; then diff --git a/scripts/test-env/stop-all.sh b/scripts/test-env/stop-all.sh index 4a3a4830..5c91617c 100755 --- a/scripts/test-env/stop-all.sh +++ b/scripts/test-env/stop-all.sh @@ -1,22 +1,56 @@ #!/bin/bash -# stop-all.sh — 按逆序停止所有服务 +# stop-all.sh — 停止所有 V2 测试环境服务 (PID 文件 + 进程名匹配) source "$(dirname "${BASH_SOURCE[0]}")/config/env.sh" log_info "Stopping all services..." +# 1. Stop by PID files for pid_file in "$LOG_DIR"/*.pid; do if [[ -f "$pid_file" ]]; then pid=$(cat "$pid_file") svc=$(basename "$pid_file" .pid) if kill -0 "$pid" 2>/dev/null; then log_info "Stopping $svc (pid=$pid)..." - kill "$pid" + kill "$pid" 2>/dev/null || true sleep 2 kill -9 "$pid" 2>/dev/null || true log_ok " $svc stopped" + else + log_info " $svc already dead (pid=$pid)" fi rm -f "$pid_file" fi done +# 2. Kill any remaining Java processes by name pattern +KILL_PATTERNS=( + "cw-elevator-application" + "ninca-crk-std-backend" + "ninca-qk-alarm-app" + "ninca-common" + "component-organization" + "cwos-portal" + "cwos-manager" + "cwos-system-api" +) + +for pattern in "${KILL_PATTERNS[@]}"; do + pids=$(pgrep -f "$pattern" 2>/dev/null || true) + if [[ -n "$pids" ]]; then + for pid in $pids; do + log_info "Killing $pattern (pid=$pid)..." + kill "$pid" 2>/dev/null || true + sleep 1 + kill -9 "$pid" 2>/dev/null || true + done + log_ok " $pattern cleaned up" + fi +done + +# 3. Stop Docker containers +log_info "Stopping Docker containers..." +cd "$(dirname "${BASH_SOURCE[0]}")" +docker compose -f docker-compose.infra.yml down 2>/dev/null || true +log_ok " Docker containers stopped" + log_info "All services stopped"