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 :

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