
Ich habe ein Python-Skript, das einen RESTful-Dienst bereitstellt (unter Verwendung des Flask-Frameworks). Mit diesem Dienst möchte ich erreichen, dass er die neueste Version des Python-Skripts klont und dann main.py startet.
Mir ist klar, dass es auf Init-Level 3 gestartet werden könnte, ich bin mir jedoch nicht sicher, wie genau die Init-Informationen konfiguriert werden müssen, und ich bin mir auch nicht sicher, ob es in Ordnung ist, die Crontab mit
sudo update-rc.d myservice enable 3
was wirklich in meinem Service-Skript steht, ist etwa:
#!/bin/sh
rm -fR /home/pi/myservicedir
git clone https://repo/code.git /home/pi/myservicedir
cd /home/pi/myservicedir
python main.py
Antwort1
Ihr Skript ist kein richtiges init.d
Skript. Möglicherweise gibt es eine Vorlagendatei, /etc/init.d
die Sie zum Erstellen Ihres Startskripts verwenden können. Andernfalls sehen Sie sich einige der anderen Skripte an, /etc/init.d
um das von Ihrer Distribution verwendete Muster zu finden.
Alternativ rc.local
wird normalerweise sehr spät im Startzyklus ausgeführt. Dies wäre ein geeigneter Ort, um Ihren Startcode einzufügen. Überprüfen Sie den Wert von, $1
bevor start
Sie Ihren Code ausführen.
Die Server werden in der in aufgeführten Reihenfolge gestartet /etc/rc3.d
. Kill-Skripte K
werden zuerst in lexikalischer Reihenfolge ausgeführt, dann werden die Start-Skripte S
in lexikalischer Reihenfolge ausgeführt. Wenn Sie sicher sein möchten, dass alles ausgeführt wird, verwenden Sie eine Startreihenfolge von 99
.
Ihre Distribution sollte über eine Methode zum Installieren und Entfernen von Links in den rc#.d
Verzeichnissen verfügen. In Ihrem Fall scheint dies der Fall zu sein update-rc.d
. Dies wird normalerweise durch Kommentarzeilen oben im init.d
Skript gesteuert.
Es sollten man
Seiten mit Beschreibungen der benötigten Programme und Dateien vorhanden sein. Versuchen Sie, man update-rc.d
und auszuführen man -k init
.
Antwort2
Geben Sie $network wie folgt an:
#!/bin/bash
### BEGIN INIT INFO
# Provides: mountftp
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Mount disk2
# Description: Mount disk2
### END INIT INFO