#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")" mkdir -p logs PID_FILE="logs/server.pid" TERM_TARGETS=() if [ -f "$PID_FILE" ]; then pid=$(cat "$PID_FILE" 2>/dev/null || true) if [ -n "${pid:-}" ]; then TERM_TARGETS+=("$pid") fi fi # Catch stale instances that lost their PID file or were started manually. while IFS= read -r pid; do [ -n "$pid" ] && TERM_TARGETS+=("$pid") done < <(pgrep -f 'uvicorn trends_mcp\.mcp_server_fastmcp:app|trends_mcp\.mcp_server_fastmcp:app' || true) # De-duplicate and terminate gently first, then force if needed. if [ "${#TERM_TARGETS[@]}" -gt 0 ]; then printf '%s\n' "${TERM_TARGETS[@]}" | awk 'NF && !seen[$0]++' | while read -r pid; do if kill -0 "$pid" 2>/dev/null; then kill "$pid" 2>/dev/null || true fi done sleep 1 printf '%s\n' "${TERM_TARGETS[@]}" | awk 'NF && !seen[$0]++' | while read -r pid; do if kill -0 "$pid" 2>/dev/null; then kill -9 "$pid" 2>/dev/null || true fi done fi rm -f "$PID_FILE"