Eigene systemd Services erstellen
Wer ein Script oder eine Anwendung dauerhaft laufen lassen will macht das am saubersten als systemd-Service.
Automatischer Start beim Booten, automatischer Neustart bei Absturz, Logs über journalctl — das bekommt man alles umsonst.
Service-Datei erstellen
sudo nano /etc/systemd/system/mein-dienst.service
[Unit] Description=Mein eigener Dienst After=network.target [Service] Type=simple User=www-data WorkingDirectory=/var/www/meinprojekt ExecStart=/usr/bin/php /var/www/meinprojekt/worker.php Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
After=network.target sorgt dafür dass der Dienst erst startet wenn das Netzwerk bereit ist.Restart=on-failure startet den Prozess neu wenn er mit einem Fehler-Exit-Code beendet wird.RestartSec=5 wartet 5 Sekunden vor dem Neustart.
Dienst aktivieren und starten
sudo systemctl daemon-reload sudo systemctl enable mein-dienst sudo systemctl start mein-dienst
enable sorgt dafür dass der Dienst beim nächsten Booten automatisch startet.
Status und Logs
sudo systemctl status mein-dienst sudo journalctl -u mein-dienst -f
-f zeigt den Log live mit, wie tail -f.
Umgebungsvariablen übergeben
[Service] EnvironmentFile=/etc/mein-dienst.env
In /etc/mein-dienst.env dann einfach SCHLUESSEL=wert Zeilen eintragen.
Die Datei mit chmod 600 schützen damit nicht jeder Benutzer reinschauen kann.