[Unit] Description=Kiosk Watchdog Service - Überwacht und startet Kiosk-Komponenten neu After=multi-user.target lightdm.service myp-druckerverwaltung.service Wants=lightdm.service myp-druckerverwaltung.service [Service] Type=simple User=root Restart=always RestartSec=30 ExecStart=/bin/bash -c '\ while true; do \ # Prüfe Backend-Service \ if ! systemctl is-active --quiet myp-druckerverwaltung; then \ echo "$(date): Backend-Service nicht aktiv - starte neu" >> /var/log/kiosk-watchdog.log; \ systemctl start myp-druckerverwaltung; \ sleep 10; \ fi; \ \ # Prüfe Backend-Erreichbarkeit \ if ! curl -s --connect-timeout 5 http://localhost:5000 >/dev/null 2>&1 && ! curl -s --connect-timeout 5 http://localhost:8080 >/dev/null 2>&1; then \ echo "$(date): Backend nicht erreichbar - starte Service neu" >> /var/log/kiosk-watchdog.log; \ systemctl restart myp-druckerverwaltung; \ sleep 15; \ fi; \ \ # Prüfe LightDM \ if ! systemctl is-active --quiet lightdm; then \ echo "$(date): LightDM nicht aktiv - starte neu" >> /var/log/kiosk-watchdog.log; \ systemctl start lightdm; \ sleep 10; \ fi; \ \ # Prüfe Kiosk-Benutzer Session \ if ! pgrep -u kiosk > /dev/null; then \ echo "$(date): Kiosk-Benutzer nicht angemeldet - starte LightDM neu" >> /var/log/kiosk-watchdog.log; \ systemctl restart lightdm; \ sleep 15; \ fi; \ \ # Prüfe Chromium Kiosk-Prozess \ if ! pgrep -u kiosk -f "chromium.*kiosk" > /dev/null; then \ echo "$(date): Chromium-Kiosk nicht gefunden - starte Kiosk-Session neu" >> /var/log/kiosk-watchdog.log; \ # Versuche Kiosk-Neustart als Kiosk-Benutzer \ sudo -u kiosk DISPLAY=:0 /home/kiosk/start-kiosk.sh & \ sleep 10; \ fi; \ \ # Prüfe X-Server \ if ! pgrep -f "X.*:0" > /dev/null; then \ echo "$(date): X-Server nicht gefunden - starte LightDM neu" >> /var/log/kiosk-watchdog.log; \ systemctl restart lightdm; \ sleep 15; \ fi; \ \ # Prüfe Display-Umgebung \ if [ -z "$(DISPLAY=:0 xdpyinfo 2>/dev/null)" ]; then \ echo "$(date): Display :0 nicht verfügbar - starte LightDM neu" >> /var/log/kiosk-watchdog.log; \ systemctl restart lightdm; \ sleep 15; \ fi; \ \ # Warte 30 Sekunden vor nächster Prüfung \ sleep 30; \ done' # Umgebungsvariablen Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin Environment=DISPLAY=:0 # Logging StandardOutput=append:/var/log/kiosk-watchdog.log StandardError=append:/var/log/kiosk-watchdog.log [Install] WantedBy=multi-user.target