51 lines
1.7 KiB
Bash
Executable File
51 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
BACKEND_DIR="$ROOT_DIR/haixun-backend"
|
|
RUN_DIR="$BACKEND_DIR/.run"
|
|
COMPOSE_FILE="$BACKEND_DIR/deploy/docker-compose.yml"
|
|
|
|
stop_pid_file() {
|
|
local name="$1"
|
|
local file="$RUN_DIR/${name}.pid"
|
|
if [[ ! -f "$file" ]]; then
|
|
return 0
|
|
fi
|
|
local pid
|
|
pid="$(cat "$file" 2>/dev/null || true)"
|
|
if [[ -n "${pid:-}" ]] && kill -0 "$pid" 2>/dev/null; then
|
|
echo "[stop-all] stopping $name (pid=$pid)"
|
|
kill "$pid" 2>/dev/null || true
|
|
for _ in $(seq 1 10); do
|
|
kill -0 "$pid" 2>/dev/null || break
|
|
sleep 0.2
|
|
done
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
fi
|
|
rm -f "$file"
|
|
}
|
|
|
|
echo "[stop-all] stopping tracked processes..."
|
|
for name in worker web api; do
|
|
stop_pid_file "$name"
|
|
done
|
|
|
|
echo "[stop-all] stopping stray processes..."
|
|
pkill -f "haixun-backend/worker/style-8d-worker" 2>/dev/null || true
|
|
pkill -f "worker:style-8d" 2>/dev/null || true
|
|
pkill -f "haixun-backend/web/node_modules/.bin/vite" 2>/dev/null || true
|
|
pkill -f "go run ./gateway.go -f etc/gateway.yaml" 2>/dev/null || true
|
|
# `go run` spawns a compiled binary child under the go-build cache (e.g.
|
|
# ~/Library/Caches/go-build/.../gateway) that is NOT killed when the parent
|
|
# wrapper dies; kill the orphan too so it stops serving stale routes on the API
|
|
# port and frees the port for the freshly built binary.
|
|
pkill -f "/gateway -f etc/gateway.yaml" 2>/dev/null || true
|
|
pkill -f "dev-with-style-8d.sh" 2>/dev/null || true
|
|
|
|
if command -v docker >/dev/null 2>&1 && [[ -f "$COMPOSE_FILE" ]]; then
|
|
echo "[stop-all] stopping docker compose (mongo + redis)..."
|
|
docker compose -f "$COMPOSE_FILE" down >/dev/null 2>&1 || true
|
|
fi
|
|
|
|
echo "[stop-all] done" |