53 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
RUN_DIR="$ROOT_DIR/run"
PID_FILE="$RUN_DIR/hy-app-monitor.pid"
LOG_FILE="$RUN_DIR/hy-app-monitor.log"
ENV_FILE="${APP_ENV_FILE:-$ROOT_DIR/.env}"
SYSTEMD_SERVICE_NAME="hy-app-monitor.service"
if [ -f "$ENV_FILE" ]; then
set -a
# shellcheck disable=SC1090
. "$ENV_FILE"
set +a
fi
APP_BIND="${APP_BIND:-0.0.0.0}"
APP_PORT="${APP_PORT:-2026}"
TARGETS_FILE="${TARGETS_FILE:-$ROOT_DIR/config/targets.json}"
if [ -x "$ROOT_DIR/.venv/bin/python" ]; then
PYTHON_BIN_DEFAULT="$ROOT_DIR/.venv/bin/python"
else
PYTHON_BIN_DEFAULT="python3"
fi
PYTHON_BIN="${PYTHON_BIN:-$PYTHON_BIN_DEFAULT}"
mkdir -p "$RUN_DIR"
read_pid() {
if [ -f "$PID_FILE" ]; then
cat "$PID_FILE"
fi
}
is_running() {
local pid
pid="$(read_pid || true)"
if [ -z "${pid:-}" ]; then
return 1
fi
kill -0 "$pid" >/dev/null 2>&1
}
has_systemd_unit() {
if ! command -v systemctl >/dev/null 2>&1; then
return 1
fi
systemctl cat "$SYSTEMD_SERVICE_NAME" >/dev/null 2>&1
}