b99a9fe7d4
- Override-Datei mit Restart=always, TimeoutStopSec=10, RestartSec=5 - README mit Installations- und Diagnoseanleitung - Ziel: MC2 läuft auch nach SIGTERM-Timeout weiter
systemd-Override für mission-control-2.service
Zweck
Diese Override-Datei sorgt dafür, dass mission-control-2.service automatisch neu startet, selbst wenn der Dienst durch stop-sigterm (normales Stoppen mit SIGTERM) beendet wird.
Ohne diesen Override:
Restart=on-failurestartet nur bei non-zero Exit-Codes neu.- Bei
stop-sigterm-Timeout (Prozess beendet sich nicht innerhalb vonTimeoutStopSec) bleibt der Dienst tot.
Mit diesem Override:
Restart=alwaysstartet nach jeder Beendigung (SIGTERM, SIGKILL, Crash, etc.) neu.TimeoutStopSec=10gibt dem Prozess 10 Sekunden für sauberes Herunterfahren, dann wird SIGKILL gesendet.RestartSec=5verhindert Flackern durch kurze Pause vor dem Neustart.
Installation
# Override-Verzeichnis erstellen
mkdir -p ~/.config/systemd/user/mission-control-2.service.d/
# Datei kopieren
cp ~/mission-control-v2/deploy/mission-control-2.service.d/override.conf ~/.config/systemd/user/mission-control-2.service.d/
# Systemd neu laden
systemctl --user daemon-reload
# Dienst neu starten (Override wird jetzt aktiv)
systemctl --user restart mission-control-2
# Status prüfen
systemctl --user status mission-control-2
Diagnose
Überprüfen, ob Override aktiv ist
systemctl --user cat mission-control-2 | grep -A 10 "\[Service\]"
Erwartete Ausgabe (Override wird nach der Haupt-Unit geladen):
# /home/hitonabi/.config/systemd/user/mission-control-2.service
[Unit]
Description=Mission Control 2.0 (Cockpit)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=%h/mission-control-v2/backend
ExecStart=%h/mission-control-v2/backend/.venv/bin/python -m uvicorn app:app --host 0.0.0.0 --port 9001
Environment=PYTHONPATH=%h/mission-control-v2
Environment=MC_PORT=9001
Environment=MC_LLAMA_SWAP_URL=http://127.0.0.1:8080
Environment=MC_CONFIG_PATH=/etc/llama-swap/config.yaml
Environment=MC_MODELS_DIR=/srv/models
Environment=MC_MEMORY_DB=/srv/models/mission-control-memory.db
Restart=on-failure
RestartSec=3
# /home/hitonabi/.config/systemd/user/mission-control-2.service.d/override.conf
[Service]
Restart=always
TimeoutStopSec=10
RestartSec=5
Testen des Restart-Verhaltens
Vorsicht: Der Dienst wird neu gestartet.
# SIGTERM senden (sollte sofort neu starten)
systemctl --user kill mission-control-2 -s SIGTERM
# Status prüfen (sollte „active (running)“ zeigen)
systemctl --user status mission-control-2 --wait
Log-Ausgabe nach Restart
# Letzte Logs anzeigen (auch nach Restart)
journalctl --user -u mission-control-2 -f
Fehlerbehandlung
Dienst startet nicht mehr nach Override
-
Override temporär deaktivieren:
mv ~/.config/systemd/user/mission-control-2.service.d/override.conf{,.bak} systemctl --user daemon-reload systemctl --user restart mission-control-2 -
Log prüfen:
journalctl --user -u mission-control-2 -n 100 --no-pager -
Wenn
Restart=alwayszu häufigem Neustart führt:RestartSecerhöhen (z. B. auf 30)StartLimitIntervalSecundStartLimitBurstsetzen (z. B.StartLimitIntervalSec=60,StartLimitBurst=3)
Diagnose-Skript
#!/bin/bash
# Diagnose-Script für mission-control-2 Restart-Verhalten
echo "=== mission-control-2 Restart-Konfiguration ==="
echo "Aktueller Restart-Modus:"
systemctl --user show mission-control-2 | grep -E "^Restart=|^RestartSec=|^TimeoutStopSec="
echo ""
echo "Override-Datei existiert?"
if [[ -f ~/.config/systemd/user/mission-control-2.service.d/override.conf ]]; then
echo "Ja"
echo "Override-Inhalt:"
cat ~/.config/systemd/user/mission-control-2.service.d/override.conf
else
echo "Nein"
fi
Hinweise
- Diese Override-Datei ersetzt die
Restart=on-failure-Einstellung in der Haupt-Unit. - Die Override-Datei ist nicht Bestandteil des Live-Checkouts
~/mission-control-v2. - Nach jedem
deploy.sh-Lauf muss der Override manuell wiederhergestellt werden, dadeploy.shden Live-Checkout resettet.