54 lines
1.4 KiB
Bash
Executable File
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
|