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 120doneMachen Sie die Datei ausführbar, indem Sie den folgenden Befehl ausführen.
$ chmod +x /usr/bin/script.shLassen 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.serviceUnd 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.targetErklä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.