killserver.sh 1010 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. cd "$(dirname "$0")"
  4. mkdir -p logs
  5. PID_FILE="logs/server.pid"
  6. TERM_TARGETS=()
  7. if [ -f "$PID_FILE" ]; then
  8. pid=$(cat "$PID_FILE" 2>/dev/null || true)
  9. if [ -n "${pid:-}" ]; then
  10. TERM_TARGETS+=("$pid")
  11. fi
  12. fi
  13. # Catch stale instances that lost their PID file or were started manually.
  14. while IFS= read -r pid; do
  15. [ -n "$pid" ] && TERM_TARGETS+=("$pid")
  16. done < <(pgrep -f 'uvicorn trends_mcp\.mcp_server_fastmcp:app|trends_mcp\.mcp_server_fastmcp:app' || true)
  17. # De-duplicate and terminate gently first, then force if needed.
  18. if [ "${#TERM_TARGETS[@]}" -gt 0 ]; then
  19. printf '%s\n' "${TERM_TARGETS[@]}" | awk 'NF && !seen[$0]++' | while read -r pid; do
  20. if kill -0 "$pid" 2>/dev/null; then
  21. kill "$pid" 2>/dev/null || true
  22. fi
  23. done
  24. sleep 1
  25. printf '%s\n' "${TERM_TARGETS[@]}" | awk 'NF && !seen[$0]++' | while read -r pid; do
  26. if kill -0 "$pid" 2>/dev/null; then
  27. kill -9 "$pid" 2>/dev/null || true
  28. fi
  29. done
  30. fi
  31. rm -f "$PID_FILE"