Outils pour utilisateurs


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