Voilà, je voulais faire un petit nourjal pour faire découvrir ce petit logiciel que je viens de découvrir et que je trouve absolument fabuleux, à savoir Incron¹.
Incron se base sur l'API inotify, il est d'ailleurs développé par ses auteurs, et fonctionne comme Cron (d'où le nom), à la seule différence qu'il est non pas basé sur le temps, mais sur la surveillance d'un répertoire ou d'un fichier.
C'est-à-dire que l'on peut le configurer pour surveiller un répertoire, et lors de la création, la modification, la suppression d'un fichier dans ce chemin, ou tout autre évènement de ce genre, il lance une tâche adaptée à la situtation.
Les incrontab se trouvent dans /etc/incrond.d/ à la manière de Cron, et leur format est tout simple :
path event command
« event » étant bien sûr l'un des évènements possibles, pour en voir la liste, suffit d'ouvrir le fichier inotify.h des sources du noyau (c'est un peu dommage de devoir chercher la doc dans les sources...).
Il est également possible de passer des paramètres à la commande (le chemin, l'événement, etc).
Pour l'installation, rien de plus simple que « yum install incron » ou « apt-get install incron » pour les distribs que je connais; j'imagine que pour les autres elle doit également être packagée.
Voilà, c'était pas grand chose, mais je suis tombé dessus par hasard, ça m'a fait gagné un temps fou (pour l'anecdote, j'avais besoin qu'Apache soit relancé à chaque création d'une conf dans /etc/httpd/conf.d, et j'étais parti sur l'écriture d'un script à la mano).
Alors comme ça m'a semblé assez peu connu alors que c'est un truc excellent qui laisse pleins de possibilités, j'en ai fait un petit journal pour tous ceux ici qui un jour risquent d'en avoir besoin.
¹ : http://inotify.aiken.cz/?section=incron&page=about&lang=en
# fallait le dire plus tot...
Posté par Alex . Évalué à 10.
merci !
# Bien vu
Posté par Dup (site web personnel) . Évalué à 6.
Merci de l'avoir présenté.
[^] # Re: Bien vu
Posté par manatlan (site web personnel) . Évalué à 2.
# Mouais
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
Mouais je ferais pas ça à la création, plutot à la fermeture après modification, et une verification de la syntaxe avant :)
[^] # Re: Mouais
Posté par zebra3 . Évalué à 3.
Et il faut remettre dans le contexte : la conf nouvellement créée l'est par copie d'un template modifié à coup de sed et de tr; le risque d'erreur est quasi nul.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
# Petit oubli
Posté par zebra3 . Évalué à 4.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Petit oubli
Posté par Misc (site web personnel) . Évalué à 0.
Je te conseile de regarder la video sur google tech talk, pour launchd ( http://video.google.com/videoplay?docid=1781045834610400422 ), et celle sur upstart ( http://fosdem.unixheads.org/2009/maintracks/ ), pour avoir plus d'info.
[^] # Re: Petit oubli
Posté par Littleboy . Évalué à 7.
Et comme tu es direct dans ton script, tu as access direct a toutes les infos sur le type de modif (un peu comme si tu passais tous les parametres possibles a la commande avec incrond).
Ah et comme c'est un service global du systeme, tu as access a l'API depuis vbscript/jscript/vb/c#/c++ OOB (equivalent a inotify - pour la partie FS).
[^] # Re: Petit oubli
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
En gros, cela fait très longtemps que je veux rajouter une route en plus de la route par défaut sur certains postes si l'adresse IP est dans telle classe (ce sont des portables donc pas toujours sur mon réseau). Sous debian, c'est facile à faire avec les scripts dans ifup mais personne ne m'a jamais donné la moindre piste pour Windows.
[^] # Re: Petit oubli
Posté par Littleboy . Évalué à 2.
Par contre je suis pas sur que ca marche pour les connections faites au demarrage de la machine. Pour ca tu peux utiliser Win32_NetworkConnection [3] pour enumerer les connexions et leur etat.
J'ai jamais eu a utiliser tout ca donc je peux malheureusement pas te donner du code tout fait (et surtout architecture de facon optimale).
[1] http://www.scriptinternals.com/new/us/support/Internal/WMI_M(...)
[2] http://www.microsoft.com/technet/scriptcenter/resources/qand(...)
[3] http://msdn.microsoft.com/en-us/library/aa394220%28VS.85%29.(...)
# Problème avec certaines éditeurs
Posté par Franck V . Évalué à 4.
En effet lorsque l'on édite un fichier avec ceux-ci, ils décident parfois de renommer le fichier existant et d'en créer un nouveau plutôt que d'écraser le fichier original, ce qui a pour effet de supprimer la surveillance sur le fichier.
Sous vim il est possible de contrôler ce comportement avec l'option set backupcopy (à positionner à yes pour forcer l'éditeur à modifier le fichier existant).
# ... et lsyncd (pour du rsync déclenché par inotify)
Posté par herodiade . Évalué à 10.
Auparavant j'utilisais des rsync lancés en boucles infinies, ce qui avait pas mal de désavantages : cela consomme des I/O disque inutilement (du fait de la traversé permanente de l'ensemble de l'arborescence sur la source et sur les mirroirs), cela consomme de la bande passante et du temps de calcul inutilement (tout les fichiers de l'arborescence sont comparés), et ne distribue effectivement les modifications qu'avec un inutile retard (le temps qu'il ai refait un tour de boucle, donc une traversée de l'arborescence et qu'il découvre le fichier modifié).
Lsyncd au contraire réplique *immédiatement* tout fichier ou répertoire modifié, et uniquement lui, et dort le reste du temps.
http://code.google.com/p/lsyncd/
# Un peu hors-sujet mais bon
Posté par dab . Évalué à 2.
Il serait peut-être temps de passer à aptitude : http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.fr.(...)
[^] # Re: Un peu hors-sujet mais bon
Posté par nomorsad . Évalué à 2.
[^] # Re: Un peu hors-sujet mais bon
Posté par zebra3 . Évalué à 7.
C'est sur que c'est sympa d'avoir un outil unique pour tout faire (il rassemble les fonctions d'apt-get, apt-cache, apt-mark et d'autres), mais c'est autant une question d'habitude que de fonctionnalités : je n'ai par exemple pas trouvé l'équivalent à "apt-cache policy", dont j'use et abuse.
Par ailleurs, si l'algorithme de résolution des dépendances est assez impressionant, il n'est pas toujours pertinent par rapport à la situation que je souhaite atteindre.
De plus, je n'aime pas qu'il décide tout à ma place, notamment de supprimer par défaut les paquets prétendus inutiles, alors que je sais que juste après, je vais installer un paquet dépendant d'eux (c'est inutile de supprimer pour réinstaller juste après).
Et puis il manque encore des outils comme apt-file et apt-show-versions. Je suis plus efficace avec cette multitude d'outils que je connais qu'avec un seul qui ne fait pas tout ce dont j'ai besoin.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
# /etc/httpd/conf.d…
Posté par Rénald Casagraude . Évalué à 0.
[^] # Re: /etc/httpd/conf.d…
Posté par zebra3 . Évalué à 2.
Cependant, mon besoin était que les utilisateurs puissent eux-mêmes gérer un ensemble de sites publiés; je n'ai vu que cette solution pour développer rapidement un truc utilisable.
Après, c'est sûr, on peut toujours écrire quelque chose de très élaboré et complètement respectueux des conventions du système, mais je n'avais pas vraiment le temps (ni les compétences, je ne suis pas développeur).
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.