Files
AI-Profile-Router/dev/fake-systemctl.sh

54 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Fake systemctl für lokale Tests: verwaltet den Mock-llama.cpp-Prozess.
# Simuliert: systemctl stop|start|status <service>
#
# 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