Website-Suche

So starten Sie das Bash-Skript beim Start auf Raspberry Pi automatisch


Viele Benutzer möchten, dass ihr Raspberry Pi im Rahmen der Automatisierung des Raspberry Pi Aufgaben unbeaufsichtigt ausführt. Dies reduziert sich wiederholende Aufgaben, die normalerweise auf den Schoß des Administrators fallen. Eine gängige Methode zum Auslösen automatischer Ereignisse ist das erste Hochfahren des Raspberry Pi. Eine solche Konfiguration ermöglicht es uns, jedes Mal, wenn der Raspberry Pi zum ersten Mal hochfährt, automatisch ein Bash-Skript zu starten.

In diesem Tutorial lernen Sie verschiedene Möglichkeiten kennen, wie Sie ein Bash-Skript auf einem Raspberry Pi automatisch starten können, wenn das Gerät startet. Dies wird entweder durch crontab- oder systemd-Timer erleichtert, die beide standardmäßig auf Raspberry Pi OS installiert sind, sodass Sie keine zusätzlichen Anwendungen oder Dienste herunterladen oder installieren müssen.

In diesem Tutorial lernen Sie:

  • So bearbeiten Sie crontab, um beim Start ein Bash-Skript auszuführen
  • So erstellen Sie eine Systemd-Serviceeinheit
  • So erstellen Sie ein einfaches Skript zur Überprüfung des Speicherplatzes
  • So legen Sie Berechtigungen für die Systemd-Service-Unit-Datei fest
  • Festlegen von Skriptberechtigungen
  • So aktivieren Sie die Ausführung der Systemd-Service-Unit beim Systemstart

Bash-Skript automatisch starten über crontab auf Raspberry Pi

Die erste Methode, die wir uns vorstellen werden, ist wahrscheinlich die einfachere der beiden, da es nur eine einfache Bearbeitung in der Crontab-Datei benötigt, um unser Bash-Skript so einzurichten, dass es automatisch ausgeführt wird, wenn der Raspberry Pi startet.

NOTE
Unsere Optionen mit crontab sind im Vergleich zur systemd-Methode etwas spärlich, wenn Sie also mehr Flexibilität benötigen als das, was cron bietet, können Sie mit diesem Abschnitt unten fortfahren.

  1. Öffnen Sie zunächst ein Befehlszeilenterminal und führen Sie den Befehl crontab aus. Beachten Sie, dass jeder Benutzer über eine eigene Crontab-Datei verfügt. Öffnen Sie also den Editor mit dem Benutzer, unter dem Sie das Skript ausführen möchten.

    
    crontab -e
    
  2. Wenn Sie crontab zum ersten Mal öffnen, werden Sie gefragt, welchen Editor Sie verwenden möchten. Die am einfachsten zu verwendende wäre Nano, also wählen Sie diese Option im Zweifelsfall.

  3. Verwenden Sie die folgende Syntax, um das Skript oder den Befehl hinzuzufügen, der von cron bei jedem Neustart ausgeführt werden soll. Wir verwenden die Deklaration @reboot, um anzugeben, dass das Skript jedes Mal ausgeführt werden soll, wenn der Raspberry Pi hochgefahren wird:

    
    @reboot /home/linuxconfig/myscript.sh
    

    Speichern Sie Ihre Änderungen und beenden Sie die Datei, wenn Sie fertig sind.

Bash-Skript über systemd auf Raspberry Pi automatisch starten

Wir können auch die systemd des Raspberry Pi (das Standard-Init-System) verwenden, um eine Dienstdatei zu erstellen, die beim Booten ausgeführt wird.

  1. Erstellen Sie zunächst eine Systemd-Dienstdatei, wie in einem Beispiel unten gezeigt. Wir speichern diese Datei als /etc/systemd/system/disk-space-check.service.

    [Unit]
    After=network.target
    
    [Service]
    ExecStart=/usr/local/bin/disk-space-check.sh
    
    [Install]
    WantedBy=default.target

    Nachher: Weist systemd an, wann das Skript ausgeführt werden soll. In unserem Fall wird das Skript nach der Netzwerkverbindung ausgeführt. Ein anderes Beispiel könnte mysql.target etc.
    ExecStart sein: Dieses Feld bietet einen vollständigen Pfad zum eigentlichen Skript, das beim Start ausgeführt werden soll
    WantedBy: In welchem Boot-Ziel die systemd-Unit installiert werden soll

    NOTE
    Für weitere Informationen zum Erstellen der Systemd-Service-Unit führen Sie den Befehl man systemd.unit aus.

  2. Erstellen Sie ein Skript, das beim Start des Raspberry Pi-Systems ausgeführt werden soll. Wie im obigen Schritt 1 angegeben, lautet der Pfad und der Name des neuen Skripts in unserem Beispiel /usr/local/bin/disk-space-check.sh.
    Im Folgenden finden Sie ein Beispiel für ein solches Skript:

    #!/bin/bash
    
    date > /root/disk_space_report.txt
    du -sh /home/ >> /root/disk_space_report.txt
  3. Legen Sie die entsprechenden Berechtigungen sowohl für die Systemd-Serviceeinheit als auch für das Skript fest:

    sudo chmod 744 /usr/local/bin/disk-space-check.sh
    sudo chmod 664 /etc/systemd/system/disk-space-check.service
    
  4. Aktivieren Sie als Nächstes die Service-Unit:

    sudo systemctl daemon-reload
    sudo systemctl enable disk-space-check.service
    
  5. Jetzt können Sie Ihren Raspberry Pi neu starten. Sobald das System hochgefahren ist, sollten Sie die folgende Datei mit der Speicherplatznutzung in Ihrem /root-Verzeichnis sehen:

    sudo ls /root/
    disk_space_report.txt
    

Abschließende Gedanken

In diesem Tutorial haben wir gesehen, wie ein Bash-Skript beim Start auf einem Raspberry Pi-System automatisch gestartet wird. Es gibt zwei Möglichkeiten, dieses Setup zu konfigurieren, die entweder cron oder das Erstellen eines systemd-Timers beinhalten. Beide haben ihre eigenen zusätzlichen Optimierungen, die vorgenommen werden können, so dass eine besser funktionieren kann als die andere, abhängig von Ihrer Situation und dem Skript, das Sie ausführen möchten. Beide lassen sich ziemlich einfach einsetzen, also probieren Sie beide aus und sehen Sie, welches für Sie am besten geeignet ist.

Verwandte Artikel: