Projektarbeit-MYP/backend/kiosk-watchdog.service
2025-05-31 22:40:29 +02:00

76 lines
2.9 KiB
Desktop File

[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