Inotify

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
inotify
Type Sous-système du noyau Linux
Rôle Surveillance d'événements sur le système de fichiers
Outils inotifywait, inotifywatch (paquet inotify-tools)

inotify est un sous-système du noyau Linux permettant de surveiller les événements survenant sur des fichiers ou des répertoires (création, modification, suppression, etc.). Les utilitaires en ligne de commande sont fournis par le paquet inotify-tools.

Installation

yum install inotify-tools

Voir aussi les commandes inotifywatch et inotify-tools.

Exemple simple

Surveiller la création de fichiers dans un répertoire :

#!/bin/sh

# CONFIGURATION
DIR="/tmp"
EVENTS="create"

# MAIN
inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' $DIR |
while read date time file
do
   echo "$date $time Fichier créé: $file"
done

Exemple avec traitement asynchrone (FIFO)

#!/bin/sh

# CONFIGURATION
DIR="/tmp"
EVENTS="create"
FIFO="/tmp/inotify2.fifo"

# FUNCTIONS
on_exit() {
    kill $INOTIFY_PID
    rm $FIFO
    exit
}

on_event() {
    local date=$1
    local time=$2
    local file=$3
    sleep 5
    echo "$date $time Fichier créé: $file"
}

# MAIN
if [ ! -e "$FIFO" ]
then
    mkfifo "$FIFO"
fi

inotifywait -m -e "$EVENTS" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %f' "$DIR" > "$FIFO" &
INOTIFY_PID=$!

trap "on_exit" 2 3 15

while read date time file
do
    on_event $date $time $file &
done < "$FIFO"

on_exit

Ressources