fswatch – Überwacht Datei- und Verzeichnisänderungen oder -modifikationen 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 Überwachungen auf verschiedenen Betriebssystemen aus, wie z.B.:

  1. A monitor build on the File System Events API of Apple OS X.
  2. A monitor based on kqueue, a notification interface present in FreeBSD 4.1 also supported on many *BSD systems, OS X inclusive.
  3. A monitor based on File Events Notification API of the Solaris kernel plus its spin-offs.
  4. A monitor based on inotify, a kernel subsystem that shows file system modifications to apps.
  5. A monitor based on ReadDirectoryChangesW, a Windows API that records alters to a directory.
  6. A monitor that regularly check that status of file system, keeps file modification times in memory, and manually determine file system changes (which works anywhere, where stat can be used).

Merkmale von fswatch

  1. Unterstützt mehrere OS-spezifische APIs
  2. Ermöglicht rekursive Verzeichnisüberwachung
  3. Führt Pfadfilterung unter Verwendung von einschließenden und ausschließenden regulären Ausdrücken durch
  4. Unterstützt anpassbares Aufzeichnungsformat
  5. Zusätzlich unterstützt es periodische Leerlaufereignisse

So installieren Sie fswatch in Linux-Systemen

Leider ist das fswatch Paket in keinem Linux-Verteilungsstandard-Repository verfügbar. Der einzige Weg, die neueste Version von fswatch zu installieren, besteht darin, sie gemäß den folgenden Installationsanweisungen aus der Quell-Tarball zu erstellen.

Holen Sie sich zuerst den neuesten fswatch Tarball mit dem folgenden wget-Befehl und installieren Sie ihn wie folgt:

$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
$ tar -xvzf fswatch-1.9.3.tar.gz
$ cd fswatch-1.9.3
$ ./configure
$ make
$ sudo make install 

Wichtig: Stellen Sie sicher, dass Sie GNU GCC (C und C++ Compiler) und Entwicklungstools (build-essential auf Debian/Ubuntu) auf dem System installiert haben, bevor Sie fswatch aus der Quelle kompilieren. Falls nicht, installieren Sie es mit dem folgenden Befehl auf Ihren jeweiligen Linux-Distributionen.

# yum group install 'Development Tools'		[On CentOS/RHEL]
# dnf group install 'Development Tools'		[On Fedora 22+ Versions]
$ sudo apt-get install build-essential          [On Debian/Ubuntu Versions]

Bei Debian/Ubuntu-Distributionen kann folgender Fehler auftreten, während Sie den Befehl fswatch ausführen..

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

Um dies zu beheben, müssen Sie den folgenden Befehl ausführen. Dadurch werden die Links und der Cache der dynamischen Bibliotheken aktualisiert, bevor Sie fswatch verwenden können.

$ sudo ldconfig

Wie verwende ich fswatch unter Linux?

Die allgemeine Syntax zum Ausführen von fswatch lautet:

$ fswatch [option] [path]

Auf Linux wird empfohlen, den Standardmonitor inotify zu verwenden. Sie können verfügbare Monitore auflisten, indem Sie die Option -M oder - list-monitors verwenden:

$ fswatch -M
$ fswatch --list-monitors
fswatch – List Monitors

Der folgende Befehl ermöglicht es Ihnen, die Änderungen im aktuellen Verzeichnis (/home/tecmint) zu beobachten, wobei Ereignisse alle 4 Sekunden an die Standardausgabe geliefert werden.

Die Option -l oder –-latency ermöglicht es Ihnen, die Latenz in Sekunden festzulegen, wobei der Standardwert 1 Sekunde beträgt.

$ fswatch -l 4 . 

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

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

Die Verwendung der Option -t oder --timestamp druckt den Zeitstempel für jedes Ereignis aus. Um die Zeit im UTC-Format zu drucken, verwenden Sie die Option -u oder --utf-time. Sie können die Zeit auch mit der Formatierungsoption -f oder --format-time formatieren:

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

Anschließend gibt -x oder --event-flags an, dass fswatch die Ereignisflags neben dem Ereignispfad ausdruckt. Sie können die Option –event-field-seperator verwenden, um Ereignisse mit dem speziellen Trennzeichen auszudrucken.

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

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

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

Vielleicht können Sie die Manpage von fswatch für detaillierte Verwendungsoptionen und Informationen durchsuchen:

$ man fswatch

Für weitere Informationen und Verwendung besuchen Sie das Github-Repository von fswatch: https://github.com/emcrisostomo/fswatch

In diesem Beitrag haben wir ein einfaches Befehlszeilen-Dienstprogramm behandelt, mit dem Linux-Benutzer benachrichtigt werden, wenn der Inhalt bestimmter Dateien oder Verzeichnishierarchien geändert wird.

I hope all went well with the installation, if that is not the case for you, make an effort to reach us via the feedback form below. In addition, in case you have used it before, you may want to offer us some thoughts about your experience with fswatch.

Source:
https://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/