Ich habe dieses Skript in meinem Home-Ordner (pi): server.py.
Wie kann ich Debian dazu bringen, dieses Skript beim Start auszuführen, sodass ich mich nicht anmelden und es manuell ausführen muss?
Antwort1
Als diese Antwort zum ersten Mal geschrieben wurde, verwendete Debian (wie standardmäßig installiert) „SysV“-RC-Skripte mit der start-stop-daemon
Binärdatei. In der Datei befand sich ein Beispielskript, /etc/init.d/skeleton
das man als Grundlage für sein RC-Skript verwenden konnte. Sobald man sein RC-Skript hatte und es als ausführbar markiert hatte, update-rc.d
konnte der Befehl verwendet werden, um es den gewünschten Ausführungsebenen hinzuzufügen.
Im Laufe der Jahre haben sich die Dinge geändert. Im Jahr 2014 haben sich insbesondere zwei Dinge geändert:
- Das
/etc/init.d/skeleton
Skript wurde durch das Beispielskript in derinit-d-script
(5)-Manualseite ersetzt, das später im Jahr 2018 zumnurDie verfügbare Basis/etc/init.d/skeleton
wurde vollständig abgeschafft. Der Inhalt des Skeletts hat sich ebenfalls erheblich geändert, da die Benutzer keine Aufrufe mehr schreiben müssenstart-stop-daemon
oder tatsächlich viel mehr als einige Variablenzuweisungen. (Siehehttps://unix.stackexchange.com/a/480897/5132.) - Der installierte Standard wurde auf systemd geändert, und man musste stattdessen systemd-Service-Unit-Dateien schreiben (die nicht als ausführbar markiert werden mussten) und sie mit aktivieren
systemctl enable
. Es gab jedoch keine Beispiel-Unit-Datei. (Siehehttps://github.com/systemd/systemd/issues/10572.)
Ab 2018 müssen Sie also eine systemd-Service-Unit-Datei schreiben, die (zumindest) Ihr Skript (mit einem absoluten Pfadnamen) in einer ExecStart
Einstellung benennt. Obwohl die Frage keine Möglichkeit angibt, möchten Sie möglicherweise eine User
Einstellung verwenden, damit das Skript unter der Schirmherrschaft Ihres Benutzerkontos und nicht unter der des Superusers ausgeführt wird. Und Siekönnte, wiederum abhängig von Dingen, die in der Frage nicht angegeben sind, müssen Sie die relative Reihenfolge des Aufrufs Ihres Skripts und das (automatische) Mounten Ihres Home-Verzeichnisses koordinieren, wenn es separat gemountet ist.
Antwort2
su -c 'SCRIPT' USER
In einfügen /etc/rc.local
.