Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
incron [Le 19/04/2014, 18:20] 88.178.143.43 [Installation] |
incron [Le 14/07/2023, 12:01] (Version actuelle) Benjamin Loison [Configurer les dossiers et les actions à effectuer] Retrait d'un espace non nécessaire |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>système administration}} | ||
====== Présentation ====== | ====== Présentation ====== | ||
- | **incron** est un outil qui exécute des actions selon des événements du système de fichiers. | + | ===== Origine ===== |
+ | |||
+ | **incron** (remplaçant de //dnotify//) est le diminutif de **in**otify **cron**tab qui est le diminutif de **c**h**ron**o **tab**le qui signifie table de planification. | ||
+ | |||
+ | [[https://fr.wikipedia.org/wiki/Inotify|inotify]] est un mécanisme du [[https://fr.wikipedia.org/wiki/Noyau_Linux|noyau Linux]] qui fournit des notifications concernant le système de fichiers. | ||
+ | |||
+ | ===== Description ===== | ||
+ | |||
+ | Ainsi, **incron** est un outil qui exécute des actions selon des événements du système de fichiers. | ||
Il est composé de : | Il est composé de : | ||
- | * **incrond** : un démon (un service qui tourne en tache de fond) | + | * **incrond** : un démon (un service qui tourne en tâche de fond) |
* **incrontab** : configurer les actions en ligne de commande | * **incrontab** : configurer les actions en ligne de commande | ||
- | * **/etc/incron.conf** : le fichier de configuration principal | + | * **/etc/incron.conf** : le fichier de configuration principal |
* **/etc/incron.d/** : répertoire contenant la définition de fichiers/de répertoires à monitorer | * **/etc/incron.d/** : répertoire contenant la définition de fichiers/de répertoires à monitorer | ||
* **/etc/incron.{allow,deny}** (optionnel) : fichier définissant les utilisateurs autorisés à utiliser l’outil | * **/etc/incron.{allow,deny}** (optionnel) : fichier définissant les utilisateurs autorisés à utiliser l’outil | ||
Ligne 11: | Ligne 20: | ||
Fonctionnement : le fonctionnement est proche de cron : | Fonctionnement : le fonctionnement est proche de cron : | ||
- | * le démon incrond scan les fichiers /etc/incron.d/ pour savoir quoi faire en fonction des evenements du system | + | * le démon **incrond** scanne les fichiers **/etc/incron.d/** pour savoir quoi faire en fonction des évènements du système |
- | ====== Installation ====== | + | ===== Installation ===== |
[[:tutoriel:comment_installer_un_paquet|Installer un paquet]] [[apt://incron|incron]] | [[:tutoriel:comment_installer_un_paquet|Installer un paquet]] [[apt://incron|incron]] | ||
- | ====== Configuration ====== | + | ===== Configuration ===== |
L'utilisation est proche de cron. | L'utilisation est proche de cron. | ||
- | ===== Gérer les autorisations de l'utilisation de incron ===== | + | ==== Gérer les autorisations de l'utilisation de incron ==== |
Si le fichier **/etc/incron.allow** existe, alors seuls les utilisateurs qui sont dans ce fichier ont le droit d'utiliser incron. Ainsi, il vous faut soit : | Si le fichier **/etc/incron.allow** existe, alors seuls les utilisateurs qui sont dans ce fichier ont le droit d'utiliser incron. Ainsi, il vous faut soit : | ||
- | * Effacer le fichier <code>sudo rm -f /etc/incron.allow</code> | + | * Effacer le fichier <code>sudo rm -f /etc/incron.allow</code> |
- | * Ajouter l'utilisateur courant (ou ceux voulus) <code>echo $USER | sudo tee /etc/incron.allow</code> | + | * Ajouter l'utilisateur courant (ou ceux voulus) <code>echo $USER | sudo tee -a /etc/incron.allow</code> |
- | ===== Configurer les dossiers et les actions à effectuer ===== | + | ==== Configurer les dossiers et les actions à effectuer ==== |
Lancer **incrontab** pour assigner des actions en fonction des fichiers/dossiers paramétrés : | Lancer **incrontab** pour assigner des actions en fonction des fichiers/dossiers paramétrés : | ||
- | <code>incrontab -e</code> | + | <code bash>incrontab -e</code> |
+ | <note>Cet utilitaire modifie un fichier dont le chemin est ///var/spool/incron/$USER//</note> | ||
+ | |||
+ | ou bien créer un fichier texte dans le dossier : | ||
+ | /etc/incron.d/ | ||
+ | |||
+ | | ||
Le format de saisie de incrontab est : | Le format de saisie de incrontab est : | ||
- | **<chemin> <type d'événement> <commande à exécuter>** | + | **<chemin_répertoire_ou_fichier> <type(s) d'événement(s) séparés par un virgule> <commande ou script à exécuter>** |
//Exemple// : | //Exemple// : | ||
- | /home/MonUser/download IN_CLOSE_WRITE /home/td/incron-script.sh | + | /home/mon_user/download IN_CLOSE_WRITE /home/mon_user/mon_script_incron.sh |
+ | ===Règles importantes=== | ||
+ | * Si votre dossier comporte des **espaces**, il faut mettre un antislash \ devant chacun d'entre eux. Les guillements ne marcheraient pas. Ex : **Mon\ dossier\ avec\ espace** au lieu de **"Mon dossier avec espace"** | ||
- | **Liste des types d'événements** : | + | * Il est préférable d'**utiliser un script** plutot que de lancer directement des commandes. Effectivement, certaines commandes semblent ne pas marcher quand elles sont directement appelé dans le fichier alors qu'elles marchent quand elles sont appelées dans le script. |
- | ^ type d'événement ^ Signification ^ | + | |
- | | IN_ACCESS | File was accessed (read) | | + | |
- | | IN_ATTRIB | Metadata changed (permissions, timestamps, extended attributes, etc.) | | + | |
- | | IN_CLOSE_WRITE | File opened for writing was closed. on attend que le fichier soit cloturé, dans notre cas, que le téléchargement SOIT TERMINE avant de déclencher la commande ou le script | | + | |
- | | IN_CLOSE_NOWRITE | File not opened for writing was closed | | + | |
- | | IN_CREATE | File/directory created in watched directory. **Attention** : la commande est déclenchée lorsque le fichier est créé MAIS pas "terminé". Dans le cas d'un téléchargement qui dure 2 mn dans notre répertoire "download", la commande se déclencherait dès la création du fichier SANS ATTENDRE LA FIN DU TELECHARGEMENT. L'operation de déplacement échouerait. | | + | |
- | | IN_DELETE | File/directory deleted from watched directory | | + | |
- | | IN_DELETE_SELF | Watched file/directory was itself deleted | | + | |
- | | IN_MODIFY | File was modified | | + | |
- | | IN_MOVE_SELF | Watched file/directory was itself moved | | + | |
- | | IN_MOVED_FROM | File moved out of watched directory | | + | |
- | | IN_MOVED_TO | File moved into watched directory | | + | |
- | | IN_OPEN | File was opened | | + | |
+ | * Le display n'est pas actif. Vous ne pouvez donc pas appeler de commande graphique tel que Zenity pour afficher des boites de dialogue (ou alors quelqu'un pourrait expliquer comment ?). | ||
+ | Une possibilité (à inclure dans le script exécuté par incron) : **à adapter selon la session et l'utilisateur** | ||
+ | <code>sudo -u nom_utilisateur sh -c '\ | ||
+ | export DISPLAY=:0 | ||
+ | PID=$(pgrep gnome-session) | ||
+ | [ ! -z "$PID" ] && dbus=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ | cut -d= -f2-) | ||
+ | export DBUS_SESSION_BUS_ADDRESS=$dbus | ||
+ | zenity --info --title "TEST INCRON" --text "test graphique incron." | ||
+ | '</code> | ||
+ | On peut ajouter <code> -- "$@"</code> après la dernière simple quote ' pour récupérer les arguments passés au script et donc afficher qui a déclenché quoi | ||
+ | |||
+ | * Si vous voulez appliquer plusieurs événements, il faut les séparer par une virgule et non insérer plusieurs lignes | ||
+ | |||
+ | ===Liste des types d'événements=== | ||
+ | ^ type d'événement ^ Signification ^ | ||
+ | | IN_ACCESS | le fichier a été accédé (lecture) | | ||
+ | | IN_ATTRIB | les métadonnées du fichier ont été modifiées (permissions, timestamp, attributs étendus, etc) | | ||
+ | | IN_CLOSE_WRITE | fermeture d’un fichier avec écriture. On attend que le fichier soit clôturé, dans notre cas, que le téléchargement SOIT TERMINE avant de déclencher la commande ou le script | | ||
+ | | IN_CLOSE_NOWRITE | fermeture d’un fichier sans écriture | | ||
+ | | IN_CREATE | le fichier ou répertoire créé dans un répertoire surveillé. **Attention** : la commande est déclenchée lorsque le fichier est créé MAIS pas "terminé". Dans le cas d'un téléchargement qui dure 2 mn dans notre répertoire "download", la commande se déclencherait dès la création du fichier SANS ATTENDRE LA FIN DU TÉLÉCHARGEMENT. L’opération de déplacement échouerait. | | ||
+ | | IN_DELETE | le fichier ou répertoire supprimé dans un répertoire surveillé | | ||
+ | | IN_DELETE_SELF | le fichier ou répertoire surveillé est supprimé | | ||
+ | | IN_MODIFY | le fichier ou répertoire a été modifié | | ||
+ | | IN_MOVE_SELF | le fichier ou répertoire a été déplacé | | ||
+ | | IN_MOVED_FROM | un fichier du répertoire surveillé à été déplacé | | ||
+ | | IN_MOVED_TO | un fichier a été déplacé dans le répertoire surveillé | | ||
+ | | IN_ALL_EVENTS | combinaison de tous ce qui précède | | ||
+ | | IN_MOVE | équivalent à IN_MOVED_FROM ou IN_MOVED_TO | | ||
+ | | IN_CLOSE | équivalent à IN_CLOSE_WRITE ou IN_CLOSE_NOWRITE | | ||
Pour utiliser contextuellement les fichiers/dossiers, des "Wildcard" sont disponibles : | Pour utiliser contextuellement les fichiers/dossiers, des "Wildcard" sont disponibles : | ||
^ Wildcard ^ Signification ^ | ^ Wildcard ^ Signification ^ | ||
- | | $$ | dollar sign | | + | | $# | nom du fichier ou nom du dossier sur lequel l’événement est intervenu | |
- | | $@ | watched filesystem path (see above) | | + | | $@ | chemin complet (dossier) du fichier/répertoire surveillé | |
- | | $# | event-related file name | | + | | $% | nom (textuel) de l’événement intervenu | |
- | | $% | event flags (textually) | | + | | $& | numéro de l’événement intervenu | |
- | | $& | event flags (numerically) | | + | | $$ | le caractère dollar (“$”) | |
- | ====== Liens ====== | + | ==== Prise en compte de la configuration en redemarrant le demon ==== |
- | * [[http://www.admin-linux.fr/?p=4840|Une description interessante sur admin-linux.fr]] | + | sudo service incron restart |
- | * [[http://dmesg.fr/categorie-logiciels/75-incron-executer-des-actions-selon-des-evenements-du-systeme-de-fichiers|Une autre description interessante sur dmesg.fr]] | + | |
+ | ===== Liens ===== | ||
+ | Merci infiniment pour ces 2 liens qui ont servi d'inspiration pour cette page : | ||
+ | * [[https://www.dmesg.fr/categorie-logiciels/75-incron-executer-des-actions-selon-des-evenements-du-systeme-de-fichiers|Une autre description intéressante sur dmesg.fr]] | ||
+ | * [[https://www.it-connect.fr/incron-executer-des-actions-selon-des-evenements/|Tutoriel sur l'utilisation d'Incron]] sur IT-Connect.fr | ||
+ | * [[:cron]] : planifier/programmer des tâches | ||
+ | * [[:Anacron]] : planificateur de commande « anachronique » | ||
+ | * [[fcron]] : programmer des tâches devant être exécutées | ||