74 votes

Sous Linux, comment exécuter un script shell lorsqu'un fichier ou un répertoire est modifié

Je souhaite exécuter un script shell lorsqu'un fichier ou un répertoire spécifique est modifié.

Comment puis-je facilement faire ça?

33voto

J'utilise ce script pour exécuter un script de construction sur les modifications dans une arborescence de répertoires:

 #! /bin/bash
DIRECTORY_TO_OBSERVE="js"      // might want to change this
function block_for_change {
  inotifywait -r \
    -e modify,move,create,delete \
    $DIRECTORY_TO_OBSERVE
}
BUILD_SCRIPT=build.sh          // might want to change this too
function build {
  bash $BUILD_SCRIPT
}
build
while block_for_change; do
  build
done
 

Utilise inotify-tools . Consultez la page de manuel inotifywait pour savoir comment personnaliser ce qui déclenche la construction.

22voto

Frédéric Hamidi Points 123646

Utilisez inotify-tools .

3voto

Brian Clements Points 1840

Découvrez le démon de surveillance du système de fichiers du noyau

http://freshmeat.net/projects/kfsmd/

Voici un guide pratique:

http://www.linux.com/archive/feature/124903

2voto

Yoric Points 1491

Comme mentionné, inotify-tools est probablement la meilleure idée. Toutefois, si vous programmez pour le plaisir, vous pouvez essayer de gagner des XP de piratage informatique en appliquant judicieusement la règle tail -f .

1voto

slowdog Points 2837

Voici une autre option: http://fileschanged.sourceforge.net/

Voir en particulier "exemple 4", qui "surveille un répertoire et archive tous les fichiers nouveaux ou modifiés".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X