InCron – Inotify Cron Daemon

Publié le 27 novembre 2012 par Pydubreucq

InCron, pour Inotify Cron Daemon est un gestionnaire d’événements basé sur Inotify.

Inotify est un mécanisme du noyau Linux (>=2.6.13) qui fournit des notifications concernant le système de fichiers. (définition Wikipedia)

InCron est un démon qui a le même mode de fonctionnement que cron à la différence que le lancement de job ne se fera pas en fonction de date/heure, mais d’événement sur le système de fichiers.

Voici les événements qui peuvent être surveillés :

  • IN_ACCESS – accès au fichier (lecture)
  • IN_MODIFY – modification d’un fichier
  • IN_ATTRIB – changement des attributs du fichier
  • IN_OPEN et IN_CLOSE – ouverture et fermeture du fichier
  • IN_MOVED_FROM et IN_MOVED_TO – déplacement ou renommage du fichier
  • IN_DELETE – suppression d’un fichier/répertoire
  • IN_CREATE – création d’un fichier dans le répertoire surveillé
  • IN_DELETE_SELF – suppression du fichier surveillé
  • IN_CLOSE_WRITE – Lorsque qu’un fichier ouvert pour écriture a été fermé
  • IN_CLOSE_NOWRITE – Fichier non ouvert pour écriture a été fermé
  • IN_CLOSE – couvre IN_CLOSE_WRITE et IN_CLOSE_NOWRITE
  • IN_MOVE_SELF – Le fichier/dossier surveillé a été déplacé lui-même
  • IN_MOVE – Couvre IN_MOVED_FROM et IN_MOVED_TO
  • IN_ALL_EVENTS – Regroupe tous les événements ci-dessus

Voici des possibilités supplémentaires à ajouter au masque.

  • IN_DONT_FOLLOW – Ne pas déréférencer  le chemin  s’il  s’agit  d’un lien symbolique.
  • IN_MASK_ADD – Ajouter  les événements au masque de surveillance de ce  fichier  s’il  existe  déjà  (au  lieu  de remplacer le masque).
  • IN_ONESHOT – Surveiller  le chemin  jusqu’au premier événement, puis le supprimer de la liste de surveillance
  • IN_ONLYDIR – Ne  surveiller   le chemin   que   si   c’est   un répertoire.

Voici la syntaxe du fichier de configuration de incron :

<chemin> <masque> <commande>
<chemin> – chemin surveillé
<masque> – événement surveillé
<commande> – commande lancée si l’événement survient

Ce qui pourrait donner par exemple

/var/spoo/cron/crontabs/root IN_DELETE rsync -avz /backup/crontabs/root/ /var/spool/cron/crontabs/.

C’est assez simple à comprendre si le fichier root (crontab de l’utilisateur root) est supprimé il est remplacé par une sauvegarde. C’est juste un exemple bien sur

La commande peut contenir ces “variables”:

  • $$ – le signe dollar
  • $@ – le chemin du système de fichiers surveillé
  • $# – Le nom du fichier lié à l’événement
  • $% – L’identifiant de l’événement (textuel)
  • $& – L’identifiant de l’événement (textuel)

Les possibilités sont énormes et dans plein de domaines

Liens utiles :

Site Officiel de InCron

Article assez complet sur Incron de admin-linux.fr

Article intéressant également sur incrontab

La manpage d’inotify d’Ubuntu (très complet)

Pour la création de l’image, j’ai comme d’habitude utilisé les images d’openclipart ci-dessous :

La loupe

Le Fichier