Systemd Path Units zum Überwachen von Dateien und Verzeichnissen verwenden
Erstellen einer Path Unit-Datei
Die letzte Datei, die benötigt wird, um die Konfiguration zu vervollständigen, ist die Path Unit-Datei selbst. Die Unit-Datei muss im selben Verzeichnis wie ihre zugehörige Service-Datei erstellt werden, in unserem Fall also /etc/systemd/system. Sie sollte auch denselben Namen haben, aber mit der Erweiterung .path.
Wir legen also die Datei /etc/systemd/system/passwd-mon.path mit dem folgenden Inhalt an.
[Unit] Description="Monitor the /etc/passwd file for changes" [Path] PathModified=/etc/passwd Unit=passwd-mon.service [Install] WantedBy=multi-user.target
Der Inhalt des Abschnitts [Path]
ist der wesentliche Teil der Path Unit. PathModified
weist die Unit an, die Datei auf Änderungen zu überwachen. Die Unit
-Deklaration gibt an, welcher Service zu aktivieren ist, wenn eine Änderung entdeckt wird. WantedBy
setzt im Wesentlichen eine Abhängigkeit, die dafür sorgt, dass unser Timer erst startet, wenn das System das multi-user target (Runlevel 3) erreicht hat.
Verfügbare Path-Optionen zum Überwachen von Dateien und Verzeichnissen
Wir haben PathModified
für unsere Path Unit verwendet, aber es gibt noch mehr Optionen. Hier eine Übersicht über die weiteren verfügbaren Optionen.
- PathExists - Aktiviert die Unit, wenn die Datei oder das Verzeichnis existieren.
- PathExistsGlob - Wenn mindestens ein Datei oder ein Verzeichnis existieren, die auf das angegebene Muster passen.
- PathChanged - Wenn die Datei oder das Verzeichnis sich ändern.
- PathModified - Ähnlich wie
PathChanged
, aber nur, wenn sich Inhalte ändern. - DirectoryNotEmpty - Wenn das Verzeichnis mindestens eine Datei enthält.
Es gibt drei zusätzliche Optionen, die in der Sektion [Path]
verwendet werden können.
- Unit - Die zu aktivierende Unit, wenn ein Pfad-Event ausgelöst wird.
- MakeDirectory - Erzeuge das Verzeichnis, das überwacht werden soll.
- DirectoryMode - Benutze den angegebenen Modus beim Erstellen des Verzeichnisses (oktale Schreibweise).
Die Korrektheit der Unit-Dateien verifizieren
Man kann das Kommando systemd-analyze
mit der Option verify
verwenden, um die Korrektheit der Unit-Dateien zu prüfen. Falls Syntaxfehler vorhanden sind, wird es darauf hinweisen.
$ sudo systemd-analyze verify /etc/systemd/system/passwd-mon.* [savona@centos7 bin]$
Wenn Fehler vorhanden sind, werden sie in rot ausgegeben.
Start der Systemd Path Unit
Wir sind nun bereit, die Path Unit zu starten. Man startet sie mit systemctl
, genau wie einen normalen Service.
$ sudo systemctl start passwd-mon.path
Jetzt prüfen wir den Status, um sicherzustellen, dass es ohne Probleme läuft.
$ sudo systemctl status passwd-mon.path ● passwd-mon.path - "Monitor the /etc/passwd file for changes" Loaded: loaded (/etc/systemd/system/passwd-mon.path; disabled; vendor preset: disabled) Active: active (waiting) since Sat 2020-01-25 13:30:20 EST; 6s ago Jan 25 13:30:20 putor systemd[1]: Started "Monitor the /etc/passwd file for changes".
Aktivieren der Systemd Path Unit beim Booten
Die Path Unit zu aktivieren, so dass sie nach dem Booten automatisch startet, funktioniert genauso wie bei Services:
$ sudo systemctl enable passwd-mon.path