Um ein Script im Hintergrund laufen zu lassen kann launchtool, upstart oder start-stop-daemon verwendet werden.
Ein einfacher Weg ist aber die Verwendung von supervisord (einem Python-Paket). Nach der Installation mit
sudo apt-get install supervisor
muss die Konfigurationsdatei (Ubuntu: /etc/supervisor/supervisord.conf) angepasst werden.
Dazu muss wenigstens ein Programm hinzugefügt werden, damit sich supervisord darum kümmern kann.
[program:myscript] command=python /home/myuser/script.py numprocs=1 autostart=true autorestart=true user=myuser
Hier ein Beispiel:
- Python-Interpreter mit script.py aufrufen
- Genau eine Instanz erlauben
- Beim Hochfahren des Rechners starten
- script.py restarten, wenn das Script nicht mehr läuft
- Als User „myuser“ laufen lassen
Die ganze Palette der Parameter ist unter supervisord.org einsehbar.
Nach der Konfiguration muss der Daemon gestartet werden:
sudo supervisor -c /etc/supervisor/supervisord.conf
Die Angabe der Konfigurationsdatei stellt sicher, dass die richtige Konfig-Datei genommen wird. Wird supervisord in einem „fremdem“ Ordner gestartet, könnte es eine schadhafte Konfig-Datei (./supervisord.conf) laden. Zudem gibt es einen Warnhinweis, wenn supervisord ohne Konfigurationsdatei gestartet wird.
Wurden Änderungen an der Konfig vorgenommen, müsse diese dem System mitgeteilt werden:
supervisorctl update
Danach kann mit
supervisorctl avail
Eine Liste der verfügbaren Programme eingesehen werden (in unserem Fall nur „myscript“). Gestarted wird mit
supervisorctl start myscript
Um den Status zu sehen
supervisorctl status
Stoppen des Daemons mit
supervisorctl stop myscript
Um alle Porgramm zu stoppen
supervisorctl stop all
Der Aufruf von supervisorctl ohne Parameter öffnet die supervisor-Shell, die mit „quit“ verlassen werden kann.