Website-Suche

fswatch – Überwachen Sie Datei- und Verzeichnisänderungen unter Linux


fswatch ist ein plattformübergreifender Dateiänderungsmonitor, der Benachrichtigungen erhält, wenn der Inhalt der angegebenen Dateien oder Verzeichnisse geändert oder modifiziert wird.

Es führt vier Arten von Monitoren auf verschiedenen Betriebssystemen aus, wie zum Beispiel:

  • Ein Monitor, der auf der File System Events API von Apple OS X basiert.
  • Ein Monitor basierend auf kqueue, einer in FreeBSD 4.1 vorhandenen Benachrichtigungsschnittstelle, die auch auf vielen *BSD-Systemen, einschließlich OS X, unterstützt wird.
  • Ein Monitor, der auf der File Events Notification API des Solaris-Kernels und seiner Ableger basiert.
  • Ein Monitor basierend auf inotify, einem Kernel-Subsystem, das Dateisystemänderungen an Apps anzeigt.
  • Ein Monitor basierend auf ReadDirectoryChangesW, einer Windows-API, die Änderungen an einem Verzeichnis aufzeichnet.
  • Ein Monitor, der regelmäßig den Status des Dateisystems überprüft, Dateiänderungszeiten im Speicher speichert und Dateisystemänderungen manuell ermittelt (was überall funktioniert, wo stat verwendet werden kann).

Funktionen von fswatch

  • Unterstützt mehrere betriebssystemspezifische APIs
  • Ermöglicht die rekursive Verzeichnisüberwachung
  • Führt eine Pfadfilterung durch, indem reguläre Ausdrücke ein- und ausgeschlossen werden
  • Unterstützt anpassbares Datensatzformat
  • Darüber hinaus werden periodische Leerlaufereignisse unterstützt

So installieren Sie fswatch in Linux-Systemen

Um fswatch unter Linux zu installieren, verwenden Sie den folgenden entsprechenden Befehl für Ihre spezifische Linux-Distribution.

sudo apt install fswatch         [On Debian, Ubuntu and Mint]
sudo yum install fswatch         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fswatch  [On Gentoo Linux]
sudo apk add fswatch             [On Alpine Linux]
sudo pacman -S fswatch           [On Arch Linux]
sudo zypper install fswatch      [On OpenSUSE]    
sudo pkg install fswatch         [On FreeBSD]

Wenn fswatch nicht für die Installation aus den Standard-Systemrepositorys verfügbar ist, können Sie wie in den folgenden Installationsanweisungen gezeigt aus der Quelle erstellen.

Klonen Sie zunächst das neueste fswatch-Git-Repository mit dem folgenden Git-Befehl und installieren Sie es wie gezeigt:

git clone https://github.com/emcrisostomo/fswatch.git
cd fswatch
./autogen.sh
./configure
make
sudo make install

Wichtig: Stellen Sie sicher, dass GNU GCC (C- und C++-Compiler) und Entwicklungstools (build-essential auf Debian/Ubuntu) installiert sind das System, bevor Sie fswatch aus dem Quellcode kompilieren.

Wenn nicht, installieren Sie es mit dem folgenden Befehl auf Ihren jeweiligen Linux-Distributionen.

sudo dnf group install 'Development Tools'    [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo apt-get install build-essential          [On Debian, Ubuntu and Mint]

Auf Debian/Ubuntu-Distributionen erhalten Sie möglicherweise die folgende Fehlermeldung, während Sie den Befehl fswatch ausführen.

fswatch: error while loading shared libraries: libfswatch.so.13: cannot open shared object file: No such file or directory

Um das Problem zu beheben, müssen Sie den folgenden Befehl ausführen. Dies hilft dabei, die Links und den Cache zu den dynamischen Bibliotheken zu aktualisieren, bevor Sie fswatch verwenden können.

sudo ldconfig

So verwenden Sie fswatch zum Überwachen von Dateiänderungen unter Linux

Die allgemeine Syntax zum Ausführen von fswatch lautet:

fswatch [option] [path]

Unter Linux wird empfohlen, den standardmäßigen inotify-Monitor zu verwenden. Sie können verfügbare Monitore auflisten, indem Sie -M oder - verwenden. list-monitors-Option:

fswatch -M
fswatch --list-monitors

Mit dem folgenden Befehl können Sie die Änderungen im aktuellen Verzeichnis (/home/tecmint) beobachten, wobei alle 4 Sekunden Ereignisse an die Standardausgabe übermittelt werden.

Mit der Option -l oder –-latency können Sie die Latenz in Sekunden festlegen, der Standardwert ist 1 Sekunde.

fswatch -l 4 . 

Der nächste Befehl überwacht alle 5 Sekunden Änderungen an der Datei /var/log/auth.log:

fswatch -l 5 /var/log/auth.log

Mit der Option -t oder --timestamp wird der Zeitstempel für jedes Ereignis gedruckt. Um die Zeit im UTC-Format auszudrucken, verwenden Sie - u oder --utf-time Option. Sie können die Zeit auch mit der Formatoption -f oder --format-time formatieren:

fswatch --timestamp /var/log/auth.log

Als nächstes weist -x oder --event-flags fswatch an, die Ereignisflags neben dem Ereignispfad zu drucken. Sie können die Option –event-field-seperator verwenden, um Ereignisse mit dem jeweiligen Trennzeichen zu drucken.

fswatch --events-flags ~ /var/log/auth.log

Um den numerischen Wert eines Ereignisses zu drucken, das auf Änderungen in Ihrem Home-Verzeichnis und in der Datei /var/log/auth.log hinweist, verwenden Sie -n oder --numeric Option wie folgt:

fswatch --numeric ~ /var/log/auth.log 

Detaillierte Nutzungsoptionen und Informationen finden Sie möglicherweise auf der Manpage von fswatch:

man fswatch

Weitere Informationen und Nutzungsmöglichkeiten finden Sie im Github-Repository fswatch: https://github.com/emcrisostomo/fswatch

In diesem Beitrag haben wir ein einfaches Befehlszeilenprogramm behandelt, das Linux-Benutzern hilft, benachrichtigt zu werden, wenn der Inhalt bestimmter Dateien oder Verzeichnishierarchien geändert wird.

Ich hoffe, dass bei der Installation alles gut gelaufen ist. Sollte dies bei Ihnen nicht der Fall sein, versuchen Sie, uns über das unten stehende Feedback-Formular zu erreichen. Darüber hinaus möchten Sie uns vielleicht einige Gedanken über Ihre Erfahrungen mit fswatch mitteilen, falls Sie es schon einmal verwendet haben.