InCron – Inotify Cron Daemon

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

Author: Pierre-Yves Dubreucq

Passioné par les logiciels libres depuis 2001, je suis VP Bare Metal (Dedibox) chez Scaleway. Je tiens ce blog depuis 13 ans avec beaucoup moins d'assiduité malheureusement qu'à ses débuts, mais bon, le temps est une denrée rare.

Share This Post On

11 Comments

  1. Salut @Antoine
    Merci je ne connaissais pas 😉
    Il est clair que la récursivité est un réel problème.
    Bonne journée

    Post a Reply
  2. C’est pil poil ce que je cherchais pour surveiller la création de nouveaux fichiers textes dans un répertoire que je dois transféré ailleurs et j’étais confronté au problème de la copie de fichier même si il n’était pas totalement écrit.

    Post a Reply
    • Comment tu as fait ?
      Je suis dans la même situation que toi

      Post a Reply
  3. d’ailleurs le premier lien que je donne est une version modifier de ce script pour utiliser un fichier .ini
    Le vrai script d’origine est ici: https://github.com/greggoryhz/Watcher
    Il semble être mieux mis à jour…

    Post a Reply
  4. Wouhou, c’est aussi ce que je cherchais ! J’allais même me lancer dans le développement d’un même outil. Je vais aussi aller voir du côté de Watcher pour comparer. D’ailleurs, le lien fourni par Antoine n’est pas l’original mais un fork qui n’a pas suivi les évolutions. L’auteur d’origine semble vouloir faire un peu de refactoring, c’est donc un projet à suivre (<a href="https://github.com/greggoryhz/Watcher&quot; title="Watcher par greggoryhz"https://github.com/greggoryhz/Watcher).
    Merci de la trouvaille en tout cas !

    Post a Reply
  5. C’est plutôt top ça, il faudrait je vois si c’est possible à l’intréger sur ma box XBMC. Comme ça plus besoin de scanner mes partages à chaque ajout de média ni d’épurer la médiathèque à chaque suppression!

    Post a Reply

Trackbacks/Pingbacks

  1. Nono’s Vrac 85 « m0le'o'blog - [...] InCron fonctionne comme cron, mais se déclenche lors de modification sur les fichiers et non par rapport à des…

Submit a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *