====== incron ====== incron sert à effectuer des actions automatiquement par la surveillance d'un répertoire ou d'un fichier, et l'action d'un script On commence tout d'abord par installer le démon # apt-get install incron ensuite on édite le fichier qui autorisera l'utilisateur à gérer une surveillance. Par défaut, même l'utilisateur root n'est pas autorisé. # cat /etc/incron.allow root thierry ici les utilisateurs root et thierry sont autorisés à gérer des surveillances On va par exemple faire une surveillance sur un fichier existant qui se trouve dans /tmp/test.txt grâce à la commande incrontab # incrontab -e /tmp/test.txt IN_MODIFY,IN_NO_LOOP /home/thierry/test.sh on surveille le fichier /tmp/test.txt qui doit exister avant de taper la règle dans incrontab. Le script s'exécutera en cas de modification du fichier (IN_MODIFY) et on peut mettre IN_NO_LOOP qui évitera un lancement en double du script si le script n'est pas fini alors que le fichier est à nouveau modifié. On peut mettre plusieurs lignes dans le incrontab pour surveiller plusieurs fichiers/dossiers liste des déclencheurs : * IN_ACCESS le fichier a été accédé (lecture) * IN_ATTRIB changement de métadonnées (permissions, timestamps, attributs étendus…) * IN_CLOSE_WRITE le fichier ouvert en écriture vient d'être fermé * IN_CLOSE_NOWRITE le fichier pas ouvert en écriture vient d'être fermé * IN_CREATE un fichier/dossier a été créé dans le dossier surveillé * IN_DELETE un fichier/dossier a été supprimé dans le dossier surveillé * IN_DELETE_SELF le fichier/dossier surveillé vient d'être supprimé * IN_MODIFY le fichier a été modifié * IN_MOVE_SELF le fichier/dossier surveillé a été déplacé * IN_MOVED_FROM un fichier a été déplacé hors du dossier surveillé * IN_MOVED_TO un fichier a été déplacé dans le dossier surveillé * IN_NO_LOOP met en pause la surveillance jusqu'à ce que le script se finisse * IN_OPEN le fichier a été ouvert On retrouve la syntaxe exacte de incrontab dans les pages man # man 5 incrontab ----- ===== Troubleshooting ===== En surveillant un fichier en IN_MODIFY, le script ne s'exécute qu'une seule fois ! J'avais édité le fichier avec vi. Le problème était que l'éditeur, comme beaucoup, crée un autre fichier puis le renomme, ce qui fait que le fichier d'origine n'existe plus, car incron surveille les fichiers/dossiers en utilisant leur inode. J'ai eu le cas en surveillant le access.log d'apache, et le script ne s'exécutait plus le lendemain, à cause du logrotate qui provoquait un changement d'inode du fichier, car il s'agissait d'un nouveau fichier. Il suffit alors pour tout remettre en ordre et faire que incron pointe à nouveau vers les fichiers désirés # service incron restart