GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

Systemd ist ein Dienstmanager, der Ihnen Funktionen zur Verwaltung von Daemons, Prozessverfolgung, Mount, Automount bietet. Es verwendet eine Linux-Kontrollgruppe, um die Aufgabe zu verwalten. Es ersetzt die ältere initd und ist in Debian-, Fedora-, RedHat-, Ubuntu-, Centos- und Arch-Linux-Distributionen verfügbar.

In diesem Artikel zeige ich Ihnen, wie Sie mit systemd einen Dienst erstellen. Ich werde ein manuelles Skript erstellen, das sich wie ein Prozess verhält, um die Festplattenauslastung des Linux-Systems zu ermitteln.

Lass uns anfangen. Erstellen Sie ein Bash-Skript, das Datum und Festplattennutzung in einer Datei umleitet. Sie können Dateien an jedem Ort erstellen. Hier mache ich im ausführbaren Verzeichnis /usr/bin

$ sudo vim /usr/bin/script.sh

Kopieren Sie das folgende Skript, fügen Sie es ein und speichern Sie Ihre Datei.

#!/bin/bash# Skript generiert Festplattenauslastung durch das System und speichert in einer Datei während truedodate>> /var/storage-monitor.txtsudo du -sch />> /var/storage-monitor.txtsleep 120done 

Machen Sie die Datei ausführbar, indem Sie den folgenden Befehl ausführen.

$ chmod +x /usr/bin/script.sh

Lassen Sie uns nun einen Dienst zum Ausführen des Skripts erstellen. Erstellen Sie einfach eine Datei im folgenden Verzeichnis. Beachten Sie, dass Sie einen beliebigen Namen angeben können, der jedoch mit der Erweiterung .service.

enden muss
$ vim /etc/systemd/system/monitor-disk.service

Und fügen Sie Folgendes hinzu:

[Unit]Description=Mein DatenträgerüberwachungsdienstDocumentation=https://www.kernel.org/#After=networking.service[Service]Type=simpleUser=rootGroup=rootTimeoutStartSec=0Restart=on-failureRestartSec=30s#ExecStartPre=ExecStart=/usr/bin/script.shSyslogIdentifier=Diskutilization#ExecStop=[Install]WantedBy=multi-user.target

Erklärung

  • Der Abschnitt [Unit] besteht aus Beschreibung, Dokumentationsdetails. Hier habe ich „Nachher“ erwähnt, was besagt, dass der Dienst, den wir erstellen werden, zuerst ausgeführt werden muss.
  • Der Abschnitt [Service] definiert den Diensttyp, den Benutzernamen, die Gruppe, was bei einem Fehler zu tun ist, die Zeitüberschreitung für den Neustart. Das wichtigste ist "ExecStart", das besagt, dass unsere Skriptdatei gestartet werden soll. Sie können auch „ExecStartPre“ definieren, um etwas vor der eigentlichen Skriptdatei zu definieren. „SyslogIdentifier“ ist das Schlüsselwort zur Identifizierung unseres Dienstes im Syslog. Ebenso ist ExecStop die Anweisung, was zu tun ist, um den Dienst zu stoppen.
  • Der Abschnitt [Installieren] wird verwendet, um verschiedene Zielebenen im System zu definieren.

Speichern Sie einfach die Datei und starten Sie den Dienst mit dem Befehl systemctl.

$ systemctl start monitor-disk.service

Überprüfen Sie den Dienststatus mit dem Befehl systemctl status. Sie können auch den Dienstnamen, die Dateiform, in der der systemd-Dienst geladen wird, die Dokumentation, den laufenden Prozess und die Protokolle sehen.

$ systemctl status monitor-disk.service

Überprüfen Sie, ob Ihr Skript korrekt funktioniert, indem Sie in die Datei schauen, die in der Skriptdatei definiert ist.

$ cat /var/storage-monitor.txt

Sie können auch die Aktivierungs- und Deaktivierungsfunktion des systemd-Managers überprüfen.

$ systemctl enable monitor-disk.service
$ systemctl deaktiviert monitor-disk.service

Überprüfen Sie dies auch, indem Sie den Dienst stoppen und neu starten. Es sollte kein Fehler ausgegeben werden.

$ systemctl stop monitor-disk.service
$ systemctl restart monitor-disk.service

Systemd aktiviert auch die Standardprotokollierung im Syslog. Sie können also das Live-Protokoll des Dienstes mit dem folgenden Befehl anzeigen. Suchen Sie nach dem Schlüsselwort „SyslogIdentifier=Diskutilization“

die Sie in der obigen Servicedatei verweigert haben.

$ tail -f /var/log/syslog

Schlussfolgerung

Dieser Artikel zeigt Ihnen, wie Sie Ihr eigenes Shell-Skript als systemd-Dienst ausführen. Wir hoffen, Sie haben gelernt, wie Sie Ihren eigenen Service erstellen. Senden Sie uns gerne Ihr Feedback.


Ubuntu
  1. So erstellen Sie einen Systemd-Dienst unter Linux

  2. Linux – Speicherort des Fsck-Skripts?

  3. Wie führe ich ein Shell-Skript im Hintergrund aus?

  4. Wie man ein Skript ausführt??

  5. Wie führe ich ein Shell-Skript aus, wenn sich eine Datei oder ein Verzeichnis ändert?

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie die Jar-Datei in Ubuntu Linux aus

So führen Sie ein Skript beim Booten in Debian 11 aus

So erstellen und führen Sie ein Shell-Skript in Ubuntu 20.04 LTS aus

So führen Sie .sh-Dateibefehle auf einmal in Linux aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus