Erstellen und Ausführen neuer Serviceeinheiten in SystemD mithilfe des Shell -Skripts und ausführen

Erstellen und Ausführen neuer Serviceeinheiten in SystemD mithilfe des Shell -Skripts und ausführen

Vor ein paar Tagen bin ich auf eine gestoßen Centos 7 32-Bit-Distribution und ich spürte den Wunsch, es auf einer alten 32-Bit-Maschine zu testen. Nach dem Booten wurde mir klar "hoch" jedes Mal nach dem Start manuell. Die Frage war also, wie ich ein Skript einstellen konnte, das diesen Job erledigt, und jedes Mal, wenn ich meinen Computer starte?

Nun, das ist sehr einfach und ich zeige Ihnen die Systemd-Wege mit Serviceinheiten. Aber zuerst eine kleine Einführung in die Serviceinheiten.

In diesem Artikel werde ich erklären, was a "Serviceeinheit" In Systemd ist es einfach, einen zu erstellen und auszuführen. Ich werde versuchen zu vereinfachen was "Ziele" sind, warum wir sie nennen "Sammlungen von Einheiten" Und was sind ihre "will". Schließlich nutzen wir eine Serviceeinheit, um unser eigenes Skript nach der Boot -Prozedur auszuführen.

Es ist klar. Andere Dienste werden so genannt, um ausgeführt zu werden, wenn der Computer zum Beispiel die Rettungsstufe erreicht (Runlevel 0) und andere, wenn es den Multi-Benutzer-Level erreicht (Runlevel 3). Sie können sich diese Ebenen als vorstellen als Ziele.

In einfacher Weise ist Target eine Sammlung von Serviceinheiten. Wenn Sie einen Blick auf Serviceeinheiten werfen möchten, die in Ihrem ausgeführt werden grafisch.Ziel Ebene, Typ:

# Systemctl --Type = Service 
Listen Sie alle Serviceeinheiten in CentOS 7 auf

Wie Sie sehen können, sind einige Dienste aktiv und "Betrieb" Die ganze Zeit, während andere einmal laufen und enden (verlassen). Wenn Sie den Status eines Dienstes überprüfen möchten, geben Sie ein:

# Systemctl Status Firewalld.Service 
Überprüfen Sie den Status des Dienstes in CentOS 7

Wie Sie sehen können, habe ich den Status von überprüft Firewall.Service (Spitze: Sie können die automatische Vervollständigung für den Namen des Dienstes verwenden). Es informiert mich das Firewall Der Service wird ständig ausgeführt und ist aktiviert.

Verpassen Sie nicht: So konfigurieren Sie den Firewalld -Service in CentOS 7

Aktiviert und deaktiviert bedeutet, dass der Dienst während des nächsten Starts dauerhaft geladen wird oder nicht. Andererseits hat ein Dienst zu starten und zu stoppen, und hat die Einschränkung der vorliegenden Sitzung und es ist nicht dauerhaft.

Zum Beispiel, wenn Sie eingeben:

# SystemCtl Stop Firewalld.Service # SystemCtl Status Firewalld.Service 
Dienste in CentOS 7 verwalten

Sie können sehen, dass die Firewall.Service ist inaktiv (tot), aber es ist noch aktiviert, was bedeutet, dass es beim nächsten Start geladen wird. Wenn wir also möchten, dass ein Dienst in Zukunft während der Startzeit geladen wird, müssen wir ihn aktivieren. Was für eine großartige Schlussfolgerung! Lassen Sie uns einen erstellen, es ist einfach.

Wenn Sie in den Ordner gehen:

# CD/etc/systemd/system # ls -l 
Systemd -Systemdateien

Sie können einige Linkdateien von Einheitsdiensten und einige Verzeichnisse der "will" eines Ziels. Zum Beispiel: Was das Multi-Benutzer-Ziel geladen werden soll, wenn die Boot-Prozedur seine Ebene erreicht, ist im Verzeichnis mit Namen aufgeführt /etc/systemd/system/multi-user.Ziel.will/.

# ls Multi-Benutzer.Ziel.will/ 
Multi -Benutzer -Zieldienste

Wie Sie sehen können, enthält es nicht nur Dienstleistungen aber auch andere Ziele die auch Dienstesammlungen sind.

Lassen Sie uns eine Serviceinheit mit dem Namen erstellen Verbindung.Service.

# VIM -Verbindung.Service 

und geben Sie Folgendes ein (Treffer "ich" Für den Einfügenmodus) speichern und beenden Sie (mit "Esc" Und “: WQ!” ):

[Einheit] Beschreibung = Netzwerkverbindung nach = Netzwerk aufbauen.Ziel [Service] execstart =/root/scripts/conup.sh [install] wantby by = multi-user.Ziel 
Erstellen Sie neue Serviceeinheiten in CentOS 7

Um die oben genannten zu erklären: Wir haben eine Einheit des Service -Typs erstellt (Sie können auch Einheiten des Zieltyps erstellen), haben wir festgelegt, dass sie nach dem geladen werden, nach dem Netzwerk.Ziel (Sie können verstehen, dass das Booting-Prozedur die Ziele mit einer definierten Reihenfolge erreicht) und wir möchten, dass der Dienst ein Bash-Skript mit dem Namen ausführt Konup.Sch was wir schaffen werden.

Der Spaß beginnt mit dem letzten Teil [Installieren]. Es sagt, dass es von von ihnen gesucht wird „Multi-Benutzer.Ziel". Wenn wir unserem Service aktivieren, wird ein symbolischer Link zu diesem Dienst in der Erstellung erstellt Multi-Benutzer.Ziel.will Ordner! Habe es? Und wenn wir es deaktivieren, wird dieser Link gelöscht. So einfach.

Aktivieren Sie es einfach und überprüfen Sie:

# Systemctl aktivieren die Verbindung.Service 

Es informiert uns, dass der symbolische Link in der Multi-Benutzer.Ziel.will Ordner wurde erstellt. Prüfen Sie:

# ls Multi-Benutzer.Ziel.will/ 
Aktivieren Sie den Service in CentOS 7

Wie du sehen kannst "Verbindung.Service" ist bereit für den nächsten Booten, aber wir müssen zuerst die Skriptdatei erstellen.

# CD /root # Mkdir -Skripte # CD -Skripte # vim conup.Sch 

Fügen Sie die folgende Zeile innen hinzu Vim und rette es:

#!/bin/bash nmcli Verbindung up ENP0S3 

Wenn Sie möchten, dass Ihr Skript etwas anderes ausführt, können Sie anstelle der zweiten Zeile alles eingeben, was Sie wollen.

Zum Beispiel,

#!/bin/bash touch/tmp/testbootfile 

Das würde eine Datei im Inneren erstellen /tmp Ordner (nur um zu überprüfen, ob Ihr Service funktioniert).

Wir müssen das Skript auch ausführbar machen:

# Chmod +x conup.Sch 

Jetzt sind wir bereit. Wenn Sie nicht bis zum nächsten Boot warten möchten (es ist bereits aktiviert), können wir den Dienst für die aktuelle Sitzungsteilung starten:

# Systemctl Startverbindung.Service 

Voila! Meine Verbindung ist in Betrieb!

Wenn Sie sich entschieden haben, den Befehl zu schreiben "Touch /TMP /Testbootfile" In dem Skript, nur um seine Funktionalität zu überprüfen, sehen Sie, wie diese Datei innerhalb /tmp Ordner.

Service Status bestätigen

Ich hoffe wirklich, Ihnen zu helfen, herauszufinden, was Dienste, Ziele, Ziele und Ausführen von Skripten während des Bootens dreht.