Es ist unpraktisch, Raspberry Pi-Befehle einzeln zu öffnen und auszuführen, um Raspberry Pi-Programme auszuführen. Dieses Mal werde ich kurz zusammenfassen, wie ein Programm beim Start automatisch mit systemd gestartet wird.
systemd ist ein Mechanismus zum Starten von Linux und zum Verwalten des Systems. Dienste werden als Dateien in Einheiten verwaltet, die als Einheiten bezeichnet werden, anstatt als ein einzelnes Shell-Skript. Daher kann der Prozess einzeln unterteilt und ausgeführt werden. Da der Ablauf jedes Prozesses geklärt werden kann, ist außerdem eine Parallelverarbeitung möglich. Dieses Mal werden wir uns mit der Einstellungsmethode der Programmausführung beim Start befassen, sie kann jedoch auch am Ende oder mit einem Trigger wie einem Timer sowie beim Start ausgeführt werden.
Es ist ein Ablauf der Einstellungen, aber im Grunde ist es möglich, eine Servicedatei zu erstellen und die Servicedatei verwendbar zu machen.
Erstellen Sie die Servicedatei im Verzeichnis / etc / systemd / system /. Führen Sie daher den folgenden Befehl aus. Sie können einen beliebigen Namen für den Testteil von test.service verwenden.
$ sudo nano /etc/systemd/system/test.service
Beschreiben Sie es wie folgt.
test.service
[Unit]
Description = do test
[Service]
ExecStart=/home/pi/systemd/test.sh
Restart=always
Type=simple
User=pi
[Install]
WantedBy=multi-user.target
[unit] Definieren Sie die Einheit selbst. Die Beschreibung hat keinen Einfluss auf den Betrieb. Entscheiden Sie selbst.
[service] Hier wird der Startbefehl festgelegt. Wenn Sie Neustart und Typ festlegen, können Sie den Neustart auch festlegen, wenn der Dienst beendet wird. Sie können auch Ausführungsberechtigungen in Benutzer festlegen. Standardmäßig sucht systemd nicht nur mit sudo-Berechtigungen, sondern sucht nur nach Modulen, die den Berechtigungen entsprechen. Daher wird das Modul, das mit Benutzerrechten pip installiert wurde, als kein Modul eingestuft. Installieren Sie also entweder sudo pip oder ändern Sie die Berechtigungseinstellung der Servicedatei in pi.
ExecStart: Dienststartbefehl Typ: So ermitteln Sie, ob der Serviceprozess gestartet wurde. Der Standardwert ist "einfach". "Einfach": Beurteilt, dass der Dienst gestartet wurde, wenn der in ExecStart angegebene Befehl ausgeführt wird. Neustart: Neustartbedingung, wenn der Serviceprozess gestoppt wird (Standard ist "Nein") "Immer": Versuchen Sie immer einen Neustart Benutzer: Berechtigung zur Ausführung (Standard ist "root")
[install] Schreiben Sie diesen Abschnitt als Klischee. Ohne dies kann die nächste Operation nicht ausgeführt werden.
Wenn die Servicedatei vollständig ist, laden Sie sie in den Daemon.
$ systemctl daemon-reload
Die Servicedatei kann mit dem folgenden Befehl gestartet und gestoppt werden. Lassen Sie zum Zeitpunkt der Ausführung .sevice weg und geben Sie den von Ihnen festgelegten Namen der Servicedatei ein.
$systemctl Test starten
$systemctl stop test (stop)
Verwenden Sie nach Bestätigung des Vorgangs den folgenden Befehl, um zu entscheiden, ob die Servicedatei beim Start aktiviert, deaktiviert oder deaktiviert werden soll.
$systemctl enable test (Startdämon)
$systemctl disable test (Stop Daemon)
Wenn es beim Start ausgeführt wird, fließt es nicht in den Befehl. Selbst wenn ein Fehler auftritt, kann er nicht bestätigt werden. Wenn Sie diesen Befehl nach dem Start ausführen, können Sie das Protokoll der Programmausführung beim Start überprüfen.
sudo LANG=C systemctl status -l test.service
Dieses Mal habe ich auf den folgenden Artikel verwiesen. https://qiita.com/sinsengumi/items/24d726ec6c761fc75cc9 https://qiita.com/molchiro/items/ee32a11b81fa1dc2fd8d https://tomosoft.jp/design/?p=11697 https://qiita.com/marumen/items/e4c75a2617cb5d0113ce https://www.souichi.club/technology/systemd/
Jetzt kann Raspberry Pi beim Start automatisch ausgeführt werden. Wenn es automatisch ausgeführt werden kann, können Sie slackbot beim Start starten und von Ihrem Smartphone aus bedienen. Es scheint, dass Raspberry Pi praktischer gehandhabt werden kann.
Recommended Posts