first
This commit is contained in:
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
# stop-stack.sh — ferma i processi avviati da start-stack.sh.
|
||||
# Legge i PIDs da var/run/asf-stack.pids, oppure cerca per pattern.
|
||||
|
||||
set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
PID_FILE="$ROOT_DIR/var/run/asf-stack.pids"
|
||||
|
||||
echo "ASF stack STOP $(date '+%F %T %Z')"
|
||||
echo
|
||||
|
||||
stop_group() {
|
||||
local pid="$1" name="$2"
|
||||
if ! kill -0 "$pid" 2>/dev/null; then
|
||||
echo " ✗ $name (pid=$pid) già spento"
|
||||
return 0
|
||||
fi
|
||||
echo -n " ⏹ $name pid=$pid → "
|
||||
kill -TERM "$pid" 2>/dev/null || true
|
||||
local w=0
|
||||
while [ $w -lt 8 ]; do
|
||||
kill -0 "$pid" 2>/dev/null || break
|
||||
sleep 1; w=$((w+1))
|
||||
done
|
||||
if kill -0 "$pid" 2>/dev/null; then
|
||||
echo -n "SIGKILL "
|
||||
kill -9 "$pid" 2>/dev/null || true
|
||||
sleep 1
|
||||
fi
|
||||
kill -0 "$pid" 2>/dev/null && echo "FAIL (ancora vivo)" || echo "ok"
|
||||
}
|
||||
|
||||
stop_patterns() {
|
||||
echo "[fallback] kill via pattern match…"
|
||||
for pattern in \
|
||||
"uvicorn app.main:app" \
|
||||
"next dev" "next-server" \
|
||||
"python -m app.worker" "asf-worker.*run_worker"; do
|
||||
pids=$(pgrep -af "$pattern" 2>/dev/null | awk '{print $1}' || true)
|
||||
[ -z "$pids" ] && continue
|
||||
echo " pattern '$pattern' → pids=$pids"
|
||||
for p in $pids; do stop_group "$p" "$pattern"; done
|
||||
done
|
||||
}
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
echo "[from pidfile] $PID_FILE"
|
||||
while IFS=' ' read -r name pid rest; do
|
||||
[ -z "${name:-}" ] && continue
|
||||
[ -z "${pid:-}" ] && continue
|
||||
stop_group "$pid" "$name"
|
||||
done < "$PID_FILE"
|
||||
rm -f "$PID_FILE"
|
||||
else
|
||||
echo "[no pidfile $PID_FILE]"
|
||||
stop_patterns
|
||||
fi
|
||||
|
||||
# final sweep
|
||||
echo
|
||||
echo "ports still listening:"
|
||||
ss -ltnp 2>/dev/null | grep -E ":(8000|3000) " || echo " → nessuna porta 8000 / 3000 usata (ok)."
|
||||
echo "done."
|
||||
Reference in New Issue
Block a user