Fswatch est un utilitaire gratuit et open source de surveillance des modifications de fichiers multiplateforme qui nous avertit lorsque le contenu des fichiers ou répertoires spécifiés est modifié ou changé. En utilisant fswatch, nous pouvons facilement surveiller les modifications apportées aux fichiers et/ou aux répertoires. Il prend en charge tous les systèmes d'exploitation, y compris GNU/Linux, *BSD, Mac OS X, Solaris et Microsoft Windows, etc. Dans ce bref guide, laissez-moi vous montrer comment surveiller les modifications de fichiers à l'aide de fswatch dans les systèmes d'exploitation de type Unix.
Types de surveillance
fswatch implémente les types de moniteurs suivants.
- Un moniteur basé sur l'API File System Events d'Apple OS X.
- Un moniteur basé sur kqueue, une interface de notification introduite dans FreeBSD 4.1.
- Un moniteur basé sur l'API File Events Notification du noyau Solaris et ses dérivés.
- Un moniteur basé sur inotify, un sous-système du noyau Linux qui signale les modifications du système de fichiers aux applications.
- Un moniteur basé sur ReadDirectoryChangesW, une API Microsoft Windows qui signale les modifications apportées à un répertoire.
- Un moniteur qui établit périodiquement des statistiques sur le système de fichiers, enregistre les heures de modification des fichiers en mémoire et calcule manuellement les modifications du système de fichiers.
Caractéristiques
Concernant les fonctionnalités, nous pouvons énumérer les éléments suivants :
- Utilitaire multiplateforme et open source
- Compatibilité avec de nombreuses API spécifiques au système d'exploitation
- Surveillance récursive des répertoires.
- Filtrage des chemins à l'aide d'expressions régulières d'inclusion et d'exclusion.
- Format d'enregistrement personnalisable.
- Prise en charge des événements d'inactivité périodiques.
- Et beaucoup.
Surveiller les modifications de fichiers à l'aide de fswatch sous Linux
Étant donné que l'utilitaire fswatch n'est pas disponible dans les référentiels par défaut de la plupart des distributions Linux, vous devez compiler et installer manuellement la dernière version à partir de la source, comme décrit ci-dessous.
Avant de compiler, vous devez installer les outils de développement dans votre distribution Linux. Pour installer les outils de développement sur différentes distributions Linux, reportez-vous au guide suivant.
- Comment installer les outils de développement sous Linux
Ensuite, téléchargez le fichier source fswatch d'ici .
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
Extrayez l'archive téléchargée :
$ tar -zxvf fswatch-1.9.3.tar.gz
Accédez au dossier du projet :
$ cd fswatch-1.9.3/
Enfin, compilez et installez fswatch en exécutant les commandes suivantes une par une.
$ ./configure
$ make
$ sudo make install
Enfin, exécutez la commande suivante pour actualiser les liens et le cache vers les bibliothèques dynamiques :
$ sudo ldconfig
Si vous n'exécutez pas la commande ci-dessus, vous risquez d'obtenir l'erreur suivante dans les systèmes GNU/Linux.
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
utilisation de fswatch
L'utilisation de fswatch n'est pas un gros problème. La syntaxe typique de fswatch est :
$ fswatch [options] ... path-0 ... path-n
Pour tester le fonctionnement de fswatch, ouvrez deux fenêtres Terminal (appelons-les Terminal 1 et Terminal 2 ).
Dans le terminal 1, exécutez la commande fswatch pour surveiller le répertoire $HOME.
$ fswatch /home/sk/
Et, dans le Terminal 2, effectuez certaines opérations telles que la création de fichiers/dossiers, la suppression de fichiers, la modification de fichiers, etc.
Quoi que vous fassiez dans le terminal 2, vous serez notifié sur le terminal 1. Regardez les captures d'écran suivantes.
Terminal 1 - La commande fswatch est en cours d'exécution et les modifications du fichier sont surveillées :
Surveiller les modifications de fichiers à l'aide de fswatch
Terminal 2 - Effectuez des modifications aléatoires dans les fichiers/dossiers :
Par défaut, fswatch choisira le meilleur moniteur disponible sur la plate-forme actuelle, en termes de performances et de consommation de ressources. Sous Linux, le moniteur par défaut est inotify .
Pour répertorier les moniteurs disponibles sur la plate-forme actuelle (c'est-à-dire Linux dans notre cas), exécutez :
$ fswatch -M
Ou,
$ fswatch --list-monitors
Exemple de résultat :
inotify_monitor poll_monitor
Pour surveiller un fichier ou un répertoire spécifique avec une option de surveillance particulière, exécutez :
$ swatch -m kqueue_monitor /home/sk/
Par défaut, fswatch continuera à surveiller les modifications du fichier jusqu'à ce que vous l'arrêtiez manuellement en appelant CTRL+C clés.
Vous pouvez également quitter fswatch après la réception du premier ensemble d'événements en spécifiant l'option -1 comme indiqué dans la commande suivante :
$ fswatch -1 /home/sk/
Cette commande se terminera juste après la réception du premier ensemble d'événements.
fswatch surveillera les modifications dans tous les fichiers/dossiers du chemin spécifié. Si vous voulez regarder les modifications apportées uniquement dans les répertoires, utilisez -d option.
$ fswatch -d /home/sk/
Bien sûr, il y a plus d'options. Reportez-vous aux pages de manuel ou à la page de documentation du projet pour des instructions détaillées.
$ man fswatch