| 1234567891011121314151617181920212223242526272829 |
- #!/usr/bin/env bash
- set -euo pipefail
- PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
- PID_FILE="$PROJECT_DIR/runtime/service.pid"
- if [[ ! -f "$PID_FILE" ]]; then
- echo "Service is not running (PID file not found)."
- exit 0
- fi
- SERVICE_PID="$(tr -dc '0-9' < "$PID_FILE")"
- if [[ -z "$SERVICE_PID" ]] || ! kill -0 "$SERVICE_PID" 2>/dev/null; then
- rm -f "$PID_FILE"
- echo "Service is not running; stale PID file removed."
- exit 0
- fi
- kill "$SERVICE_PID"
- for _ in {1..20}; do
- if ! kill -0 "$SERVICE_PID" 2>/dev/null; then
- rm -f "$PID_FILE"
- echo "Service stopped."
- exit 0
- fi
- sleep 0.5
- done
- echo "Service did not stop within 10 seconds (PID $SERVICE_PID)." >&2
- exit 1
|