#!/usr/bin/env bash set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "$0")" && pwd)" echo "Stopping dev servers (project root: $PROJECT_ROOT)" # Kill backend from pid file if [ -f "$PROJECT_ROOT/filebrowser.pid" ]; then pid=$(cat "$PROJECT_ROOT/filebrowser.pid") if kill -0 "$pid" 2>/dev/null; then echo "Killing backend pid $pid" kill "$pid" || true sleep 1 if kill -0 "$pid" 2>/dev/null; then kill -9 "$pid" || true fi fi rm -f "$PROJECT_ROOT/filebrowser.pid" fi # Kill frontend from pid file if [ -f "$PROJECT_ROOT/frontend.pid" ]; then pid=$(cat "$PROJECT_ROOT/frontend.pid") if kill -0 "$pid" 2>/dev/null; then echo "Killing frontend pid $pid" kill "$pid" || true sleep 1 if kill -0 "$pid" 2>/dev/null; then kill -9 "$pid" || true fi fi rm -f "$PROJECT_ROOT/frontend.pid" fi # Also attempt to free ports 8080 and 5173 by killing processes listening on them (best-effort) pids=$(ss -ltnp | grep -E '127\.0\.0\.1:8080|:5173' | grep -oP 'pid=\K[0-9]+' | sort -u || true) for p in $pids; do if [ -n "$p" ]; then if kill -0 "$p" 2>/dev/null; then echo "Killing leftover pid $p" kill "$p" || true sleep 1 if kill -0 "$p" 2>/dev/null; then kill -9 "$p" || true fi fi fi done echo "Stopped."