| 123456789101112131415161718192021222324252627282930313233 |
- #!/usr/bin/env bash
- set -euo pipefail
- PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
- VENV_PYTHON="$PROJECT_DIR/.venv/bin/python"
- PID_FILE="$PROJECT_DIR/runtime/service.pid"
- LOG_FILE="$PROJECT_DIR/logs/service.log"
- if [[ ! -x "$VENV_PYTHON" ]]; then
- echo "Python environment missing. Run ./scripts/setup.sh first." >&2
- exit 1
- fi
- if [[ -f "$PID_FILE" ]]; then
- EXISTING_PID="$(tr -dc '0-9' < "$PID_FILE")"
- if [[ -n "$EXISTING_PID" ]] && kill -0 "$EXISTING_PID" 2>/dev/null; then
- echo "Service already running (PID $EXISTING_PID)."
- exit 0
- fi
- fi
- mkdir -p "$PROJECT_DIR/runtime" "$PROJECT_DIR/logs"
- cd "$PROJECT_DIR"
- "$VENV_PYTHON" -m data_query_agent --check-config
- nohup "$VENV_PYTHON" -m data_query_agent >>"$LOG_FILE" 2>&1 &
- SERVICE_PID=$!
- printf '%s\n' "$SERVICE_PID" > "$PID_FILE"
- sleep 1
- if ! kill -0 "$SERVICE_PID" 2>/dev/null; then
- echo "Service failed to start. Check $LOG_FILE" >&2
- exit 1
- fi
- echo "Service started (PID $SERVICE_PID). Log: $LOG_FILE"
|