Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
31 mars 2016

inotify           Systèmes de fichier


inotifywait

inotifywait

Attend les changements de fichiers en utilisant inotify

   Il peut soit quitter une fois l'événement produit, ou s'exécuter en continue et afficher les événements qui se produisent. inotifywait affiche des diagnostiques sur l'erreur standard et les informations d'événement sur la sortie standard. La sortie de l'événement peut être configuré, mais par défaut, il consiste de lignes sous la forme suivante:

watched_filename EVENT_NAMES event_filename
watched_filename est le nom du fichier dans lequel l'événement se produit, si le fichier est un répertoire, un '/' final est affiché
EVENT_NAMES sont les noms des événements inotify qui se produisent
event_filename est affiché seulement quand l'événement se produit sur un répertoire, et dans ce cas le nom du fichier dans le répertoire qui à causé l'événement est affiché

OPTIONS

@‹file› Exclus le fichier spécifié dans le répertoire surveillé
--fromfile ‹file› Lit les noms de fichier à surveiller ou exclure depuis un fichier, un fichier par ligne. '@' comme préfixe exclus de fichier, si le fichier spécifié est '-', les fichiers sont lus depuis l'entrée standard
-m, --monitor Au lieu de quitter une fois un événement reçu, s'exécute indéfiniment
-d, --deamon Idem à -m, est s'exécute en tâche de fond en loggant dans un fichier spécifié avec --outfile. Implique --syslog
-o, --outfile ‹file› Sort les événements dans le fichier au lieu de stdout
-s, --syslog Affiche les erreurs dans syslog au lieu de stderr
-r, --recursive Surveille tous les sous-répertoires dans tous les répertoires passés en argument
-q, --quiet Si spécifié une seule fois, le programme sera moins verbeu. 2 fois, le programme n'affiche rien, exepté en cas d'erreur fatal.
--exclude ‹pattern› Ne traite pas les événements des fichiers dont le nom matche le regex spécifié, sensible à la casse
--excludei ‹pattern› idem, insensible à la casse
-t ‹seconds›, --timeout ‹seconds› Quitte si un événement approprié ne s'est pas produit dans les ‹seconds›. à 0, attend indéfiniment.
‹event›, --event ‹event› Écoute des événements spécifiques uniquement.
-c, --csv Sort au format CSV
--timefmt ‹fmt› Défini un format de date accepté par strftime(3) à utiliser avec %T de l'option --format
--format ‹fmt› Format personnalisé, les caractères de conversions suivants sont supportés:

        %w Nom du fichier surveillé
        %f Dans un répertoire, le nom du fichier ayant causé l'événement
        %e Événements qui se sont produits, séparés pas des ','
        %Xe Idem, séparé par le caractère ‹X›
        %T Date courante

Code de sortie

0 succès
1 Erreur d'exécution du programme
2 Option -t utilisé et aucun événement ne s'est produit

Événements

access accès au fichier
attrib Modification des métadonnées, ex les permissions, horodatages, attributs étendus, compteur de liens, UID ou GID.
close_write Fichier ouvert en écriture fermé
close_nowrite Fichier non ouvert en écriture fermé
create Fichier ou répertoire créé dans le répertoire surveillé
delete Fichier ou répertoire supprimé dans le répertoire surveillé
delete_self Fichier ou répertoire surveillé supprimé ( ou déplacé dans un autre système de fichier)
modify Fichier modifié
move_self Fichier ou répertoire surveillé déplacé
moved_from Généré pour le répertoire contenant l'ancien nom quand un fichier est renommé
moved_to Généré pour le répertoire contenant le nouveau nom quand un fichier est renommé
open Fichier ouvert
move Équivalent à moved_from | moved_to
close Équivalent à close_write | close_nowrite
unmount Le système de fichiers contenant l'objet surveillé a été démonté

Exemples

Attend un accès à un fichier dans le répertoire test:
inotifywait test
Script shell pour attendre efficacement pour des log https et agir en consequence:
#!/bin/sh
while inotifywait -e modify /var/log/messages; do
if tail -n1 /var/log/messages | grep httpd; then
kdialog --msgbox "Apache needs love!"
fi
done
Personnaliser le format de sortie:
inotifywait -m -r --format '%:e %f' ~/test