Wie kann ich Debian dazu bringen, beim Start ein Python-Skript auszuführen?

Wie kann ich Debian dazu bringen, beim Start ein Python-Skript auszuführen?

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-daemonBinärdatei. In der Datei befand sich ein Beispielskript, /etc/init.d/skeletondas 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.dkonnte 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/skeletonSkript wurde durch das Beispielskript in der init-d-script(5)-Manualseite ersetzt, das später im Jahr 2018 zumnurDie verfügbare Basis /etc/init.d/skeletonwurde vollständig abgeschafft. Der Inhalt des Skeletts hat sich ebenfalls erheblich geändert, da die Benutzer keine Aufrufe mehr schreiben müssen start-stop-daemonoder 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 ExecStartEinstellung benennt. Obwohl die Frage keine Möglichkeit angibt, möchten Sie möglicherweise eine UserEinstellung 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' USERIn einfügen /etc/rc.local.

verwandte Informationen