| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/usr/bin/env bash
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- cd "$SCRIPT_DIR"
- PID_FILE="server.pid"
- PORT="${MCP_PORT:-8501}"
- echo "[killserver] Checking for running virtuoso_mcp instances..."
- if [[ -f "$PID_FILE" ]]; then
- PID="$(cat "$PID_FILE" 2>/dev/null || true)"
- if [[ -n "${PID:-}" ]] && kill -0 "$PID" 2>/dev/null; then
- echo "[killserver] Stopping PID from pidfile: $PID"
- kill "$PID" || true
- sleep 0.5
- if kill -0 "$PID" 2>/dev/null; then
- echo "[killserver] PID $PID still alive, sending SIGKILL"
- kill -9 "$PID" || true
- fi
- else
- echo "[killserver] Stale or empty pidfile, removing."
- fi
- rm -f "$PID_FILE"
- fi
- STRAY_PIDS="$(ps -ef | grep -E 'uvicorn[[:space:]]+virtuoso_mcp:app' | grep -v grep | awk '{print $2}' || true)"
- if [[ -n "${STRAY_PIDS:-}" ]]; then
- echo "[killserver] Killing stray uvicorn PIDs: $STRAY_PIDS"
- for p in $STRAY_PIDS; do
- kill "$p" || true
- done
- sleep 0.5
- for p in $STRAY_PIDS; do
- if kill -0 "$p" 2>/dev/null; then
- kill -9 "$p" || true
- fi
- done
- fi
- if command -v lsof >/dev/null 2>&1; then
- PORT_PIDS="$(lsof -ti tcp:"$PORT" || true)"
- if [[ -n "${PORT_PIDS:-}" ]]; then
- echo "[killserver] Port $PORT still in use by: $PORT_PIDS"
- for p in $PORT_PIDS; do
- kill "$p" || true
- done
- sleep 0.5
- for p in $PORT_PIDS; do
- if kill -0 "$p" 2>/dev/null; then
- kill -9 "$p" || true
- fi
- done
- fi
- fi
- echo "[killserver] Done."
|