First running version
This commit is contained in:
66
stop.sh
Executable file
66
stop.sh
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# MCPletA2A — stop.sh
|
||||
# Gracefully stops all managed services (SIGTERM → wait → SIGKILL).
|
||||
# =============================================================================
|
||||
set -uo pipefail
|
||||
|
||||
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PID_DIR="$BASE_DIR/.pids"
|
||||
|
||||
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'
|
||||
CYAN='\033[0;36m'; BOLD='\033[1m'; RESET='\033[0m'
|
||||
info() { echo -e "${CYAN}[stop]${RESET} $*"; }
|
||||
ok() { echo -e "${GREEN}[stop]${RESET} $*"; }
|
||||
warn() { echo -e "${YELLOW}[stop]${RESET} $*"; }
|
||||
|
||||
stop_service() {
|
||||
local name="$1"
|
||||
local pidfile="$PID_DIR/$name.pid"
|
||||
|
||||
if [[ ! -f "$pidfile" ]]; then
|
||||
warn "$name: no pid file found (already stopped?)"
|
||||
return
|
||||
fi
|
||||
|
||||
local pid
|
||||
pid=$(cat "$pidfile")
|
||||
|
||||
if ! kill -0 "$pid" 2>/dev/null; then
|
||||
warn "$name: process $pid is not running (stale pid file removed)"
|
||||
rm -f "$pidfile"
|
||||
return
|
||||
fi
|
||||
|
||||
info "Stopping $name (pid $pid) ..."
|
||||
kill -TERM "$pid" 2>/dev/null || true
|
||||
|
||||
# Wait up to 5 s for graceful exit
|
||||
local waited=0
|
||||
while kill -0 "$pid" 2>/dev/null && [[ $waited -lt 10 ]]; do
|
||||
sleep 0.5
|
||||
waited=$((waited + 1))
|
||||
done
|
||||
|
||||
if kill -0 "$pid" 2>/dev/null; then
|
||||
warn "$name did not exit gracefully — sending SIGKILL"
|
||||
kill -KILL "$pid" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
rm -f "$pidfile"
|
||||
ok "$name stopped"
|
||||
}
|
||||
|
||||
if [[ ! -d "$PID_DIR" ]]; then
|
||||
warn "No .pids directory found — nothing to stop"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Stop in reverse start order
|
||||
stop_service "platform-host"
|
||||
stop_service "mock-services"
|
||||
|
||||
echo ""
|
||||
echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
|
||||
echo -e "${GREEN}${BOLD} MCPletA2A stopped${RESET}"
|
||||
echo -e "${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
|
||||
Reference in New Issue
Block a user