#!/bin/bash # Fake systemctl für lokale Tests: verwaltet den Mock-llama.cpp-Prozess. # Simuliert: systemctl stop|start|status # # Umgebungsvariablen (vom Router geerbt): # FAKE_SYSTEMD_PIDFILE PID-Datei des Mocks (Default /tmp/mock_upstream_pid) # FAKE_SYSTEMD_PORT Mock-Port (Default 18080) # FAKE_SYSTEMD_PROFILE_DIR Profil-Dir für den Mock # FAKE_SYSTEMD_MOCK Mock-Skript (Default dev/mock_upstream.py) # FAKE_SYSTEMD_LOG Log-Datei (Default /tmp/mock_upstream_fake.log) CMD="${1:-}" PIDFILE="${FAKE_SYSTEMD_PIDFILE:-/tmp/mock_upstream_pid}" PORT="${FAKE_SYSTEMD_PORT:-18080}" PROFILE_DIR="${FAKE_SYSTEMD_PROFILE_DIR:-}" MOCK="${FAKE_SYSTEMD_MOCK:-dev/mock_upstream.py}" LOG="${FAKE_SYSTEMD_LOG:-/tmp/mock_upstream_fake.log}" is_running() { [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null } case "$CMD" in stop) if is_running; then PID="$(cat "$PIDFILE")" kill "$PID" 2>/dev/null || true for _ in $(seq 1 50); do kill -0 "$PID" 2>/dev/null || break sleep 0.1 done if kill -0 "$PID" 2>/dev/null; then kill -9 "$PID" 2>/dev/null || true fi rm -f "$PIDFILE" fi exit 0 ;; start) if ! is_running; then MOCK_PROFILE_DIR="$PROFILE_DIR" MOCK_PORT="$PORT" \ python3 "$MOCK" >>"$LOG" 2>&1 & echo $! > "$PIDFILE" fi exit 0 ;; status) is_running && exit 0 || exit 3 ;; *) exit 0 ;; esac