Raspberry Pi ist ein leistungsstarker SBC (Single Board Computer), den Sie für verschiedene Anwendungen und Projekte verwenden können. Seine Vielseitigkeit liegt in der Fähigkeit, alle Arten von Programmen, einschließlich benutzerdefinierter Skripte, auszuführen, auch dank Raspberry Pi OS und anderen Linux-basierten Betriebssystemen, die es ausführt.

Das Ausführen eines Skripts oder Programms auf dem Raspberry Pi ist so einfach wie das Auffinden und Ausführen auf dem System. Aber was ist, wenn Sie diesen Prozess automatisieren möchten, vielleicht weil Ihr Projekt dies erfordert oder weil Sie Ihren Workflow optimieren möchten?

Eine Antwort darauf ist das Erlernen der Verwendung von systemd.

Was ist Systemd?

systemd ist eine Suite von Systemkomponenten für die Dienstkonfiguration und das Verhalten auf modernen Linux-Systemen. Es ist mit einem identifiziert PID (Prozesskennung) von 1, da dies der erste Prozess ist, der beim Systemstart gestartet wird. Insgesamt soll systemd Sie beim Verwalten und Ausführen von Programmen beim Systemstart unterstützen. Und genau das werden Sie nutzen, um Ihr Programm beim Start auf dem Pi zu starten.

Wie eingangs erwähnt, gibt es verschiedene Methoden zum Ausführen von Programmen beim Start auf Linux-Systemen, z. B. rc.local, cron und autostart. Systemd bietet jedoch eine bessere Lösung für das Los, wenn Sie GUI-Programme (grafische Benutzeroberfläche) starten möchten. Automatisieren Sie Anwendungen, die nach dem Start bestimmter Systemprozesse ausgeführt werden sollen, oder führen Sie Programme bis zu Ihrer Planung immer wieder aus funktioniert.

Verbunden: So planen Sie Aufgaben unter Linux mit Cron und Crontab

Verwendung von systemd zum Starten von Programmen beim Start

systemd ist eine etwas kompliziertere Methode zum Starten von Programmen beim Start auf Linux-Systemen. Die Planungsflexibilität gegenüber anderen Methoden - den oben genannten - überwiegt jedoch in jeder Hinsicht die Komplexität.

Die systemd-Methode verwendet Unit-Dateien, die wie INI-Dateien Codierungsinformationen zu Geräten, Diensten, Sockets, Startzielen und anderen wichtigen Systemkomponenten enthalten.

Es gibt verschiedene Arten von Gerätedateien. Basierend auf der Art der Ressource, die Sie deklarieren möchten, müssen Sie einen Einheitendateityp entsprechend auswählen. Für den Zweck dieses Handbuchs bleiben wir jedoch bei .service-Einheitendateien, mit denen Sie das Startverhalten von Programmen und Skripten auf dem System verwalten können.

Nachfolgend finden Sie eine Aufschlüsselung der Schritte zum Starten eines Skripts / Programms beim Start mit systemd.

Erstellen eines Dienstes

Um festzulegen, dass Ihr Programm beim Start ausgeführt wird, erstellen Sie eine Service Unit-Datei, die systemd mitteilt, welches Programm wann ausgeführt werden soll. Hier erfahren Sie, wie es geht.

  1. Geben Sie im CLI-Fenster Folgendes ein sudo nano /lib/systemd/system/display.service. Sie können einen beliebigen Namen für Ihren Dienst verwenden, solange dieser mit der Erweiterung .service endet.
  2. Fügen Sie in die Servicedatei die folgenden Codezeilen ein:
    [Einheit]
    Beschreibung = PiCounter
    Nach = network.target
    [Bedienung]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Neustart = immer
    Benutzer = pi
    [Installieren]
    WantedBy = multi-user.target

Alle gängigen Konfigurationsoptionen fallen unter Einheit und Installieren Abschnitte, während die dienstspezifischen Konfigurationsoptionen unter dem Abschnitt Dienst aufgeführt sind.

Einige der oben genannten Direktiven-Wert-Paare, die Sie möglicherweise ändern müssen, umfassen:

ich. Nach dem: Es bestimmt, wann der Dienst gestartet werden soll. Einstellen auf network.target stellt sicher, dass der aufgelistete Wert - in diesem Fall network.target - beginnt, bevor die aktuelle Einheit gestartet wird. Es wird jedoch keine Abhängigkeitsbeziehung für den Dienst ausgelöst, die ausgelöst werden soll. Dies geschieht durch andere Anweisungen wie Wants, Requires und WantedBy.

Natürlich können Sie diesen Wert an Ihre Projektanforderungen anpassen. Wenn Sie beispielsweise möchten, dass Ihr Programm ausgeführt wird, nachdem Ihr Raspberry Pi eine Verbindung zu einem Netzwerk hergestellt hat, können Sie das verwenden network-online.target Wert. Sie können sich darauf beziehen Fedoras Dokumentation zu systemd um mehr über diese Werte zu erfahren.

ii. ExecStart: Es enthält den absoluten Pfad und den Programm- / Skriptnamen, den Sie beim Start ausführen möchten. Je nachdem, was Sie ausführen möchten, müssen Sie für beide Anweisungen Werte hinzufügen.

iii. Benutzer: Es identifiziert den Namen Ihres Raspberry Pi. Wenn Sie den Namen Ihres Pi geändert haben, müssen Sie diesen Wert für den Benutzer eingeben.

iv. Gesucht von: Dies ist die gebräuchlichste Methode, um den Auslöser für eine Einheit anzugeben. Durch Einstellen auf multi-user.targetkönnen Sie eine Abhängigkeitsbeziehung herstellen, in der das Programm ausgeführt wird, wenn die Systemsteuerung an die Mehrbenutzer-Shell übergeben wird.

Darüber hinaus wird Ihr Programm auch vor dem Start des X-Windows-Systems von Pi ausgeführt. Dies bedeutet, dass Ihr Programm bereits ausgeführt wird, bevor Sie sich beim System anmelden. Wenn Sie möchten, dass ein Skript ausgeführt wird, bevor Sie sich bei Ihrem Raspberry Pi anmelden, können Sie dies tun.

Die obigen Codezeilen funktionieren für Nicht-GUI-Programme. Wenn Sie jedoch ein GUI-Programm mit systemd ausführen möchten, sollten Sie Ihrer Servicedatei den folgenden Code hinzufügen:

[Einheit]
Beschreibung = PiCounter
Nach = network.target
[Bedienung]
Umgebung = Anzeige =: 0
Umgebung = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Neustart = immer
[Installieren]
WantedBy = multi-user.target

Im obigen Direktiven-Wert-Paar müssen Sie lediglich den Wert für das ändern ExecStart Richtlinie. Ersetzen Sie das Programm im Codeblock durch das Programm, das Sie beim Start ausführen möchten. Nachdem Sie die Servicedatei ausgefüllt haben, klicken Sie auf STRG + O. um es zu speichern.

Testen Sie den Service

Überprüfen Sie bei bereitem Dienst manuell, ob er funktioniert. Geben Sie dazu folgenden Befehl in das Terminal ein: sudo systemctl start display.service. Der Dienst sollte Ihre Anweisungen erfolgreich ausführen.

Beenden Sie es anschließend mit sudo systemctl stop display.service.

Aktivieren Sie den Dienst

Wenn Sie es geschafft haben, Ihr Programm mit dem Dienst erfolgreich auszuführen, müssen Sie es aktivieren, damit es Ihr Programm bei jedem Start Ihres Raspberry Pi automatisch ausführt.

Geben Sie dazu Folgendes ein sudo systemctl enable display.service im Terminalfenster. Und wenn das erledigt ist, treten Sie ein sudo neu starten um deinen Pi neu zu starten.

Sobald Ihr Raspberry Pi hochfährt, sollte systemd Ihr Programm gemäß den angegebenen Anweisungen ausführen.

Automatisierung des Programmstarts beim Start auf Raspberry Pi

Wie bei den meisten Linux-Systemen können Sie mit Raspberry Pi OS auch auf verschiedene Arten Vorgänge ausführen. Dies gilt auch für die Planung von Programmstarts. Wenn Sie also GUI-Programme / Skripte beim Start starten und eine bessere Kontrolle über Ihre Planung wünschen, ist systemd eindeutig eine bessere Methode.

Wenn Sie jedoch eine einfachere Lösung wünschen oder Ihre Projektanforderungen eine spezifische Planung erfordern, können Sie unseren Leitfaden zu lesen Ausführen eines Raspberry Pi-Programms oder -Skripts beim Start um mehr zu lernen.

Email
Das ultimative Raspberry Pi befiehlt Spickzettel

Möchten Sie mehr aus Ihrem Raspberry Pi herausholen? Hier finden Sie viele hilfreiche Befehle zum Navigieren im Pi-Terminal und zum Programmieren der GPIO-Pins.

Weiter lesen

Verwandte Themen
  • DIY
  • Himbeer-Pi
Über den Autor
Yash Wate (8 Artikel veröffentlicht)

Yash ist Staff Writer bei MUO für DIY, Linux, Programmierung und Sicherheit. Bevor er seine Leidenschaft für das Schreiben entdeckte, entwickelte er für das Web und iOS. Sie können sein Schreiben auch auf TechPP finden, wo er andere Branchen abdeckt. Neben Technik spricht er gerne über Astronomie, Formel 1 und Uhren.

Mehr von Yash Wate

Abonnieren Sie unseren Newsletter

Melden Sie sich für unseren Newsletter an, um technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote zu erhalten!

Noch ein Schritt…!

Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.

.