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 :
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 :
27 novembre 2012
Juste pour info, ceci est le 300ème article publié de ce blog, je viens de m’en apercevoir 😉
27 novembre 2012
Le gros problème de incron c’est qu’il ne sait pas surveiller récursivement une arborescence.
Pour remédier à cela, il existe
Il est très efficace et il y’a juste un script python à exécuter.
27 novembre 2012
Quel belle maitrise du code HTML!!!
watcher:
https://github.com/splitbrain/Watcher
27 novembre 2012
Salut @Antoine
Merci je ne connaissais pas 😉
Il est clair que la récursivité est un réel problème.
Bonne journée
27 novembre 2012
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.
7 mai 2019
Comment tu as fait ?
Je suis dans la même situation que toi
7 mai 2019
Comment tu as fait .??
27 novembre 2012
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…
27 novembre 2012
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" title="Watcher par greggoryhz"https://github.com/greggoryhz/Watcher).
Merci de la trouvaille en tout cas !
29 novembre 2012
Bon, après test, Watcher est pas très pratique et la config est difficile à éditer. Par contre, je suis tombé sur Watchdog [1], qui non seulement semble bien mieux écrite, mais qui, en plus, est multi-plateforme !
[1] http://packages.python.org/watchdog/
6 février 2013
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!