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