Exécution d’un script suite a un événement avec Incrontab |
Article original Publié le : 07 juin 2020 Mise a jour le : – |
J’ ai découvert récemment ce paquet, il peut permettre par exemple de déclencher des actions selon divers scenarios.
Pour mes besoins il surveille un répertoire et des qu’un fichier est crée dedans il exécute un script pour signaler la présence (hprof java).
Pre-requis
Un postfix operationnel et la commande mail
Tester sur une Centos 7.x
Installer le paquet
1 |
$ sudo yum install -y incron |
Éditer et ajouter la directive suivante
1 |
$ sudo incrontab -e |
1 |
/var/tmp/<strong>application</strong>/hprof/ IN_CLOSE_WRITE /opt/scripts/hprof.sh $# |
Créer le répertoire et afficher les droits (chown/chmod)
1 |
$ sudo mkdir /var/tmp/<strong>application</strong>/hprof |
Création du script
1 |
$ sudo vi /opt/scripts/hprof.sh |
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash set -x hprof=$1 date=`date` gzip /var/tmp/<strong>application</strong>/hprof/$hprof && \ chmod 644 /var/tmp/<strong>application</strong>/hprof/${hprof}.gz 2>/dev/null && \ echo "Le service <strong>application</strong> va être automatiquement redémarré, vérifié le hprof" | mail -s "[Hprof généré] ${hprof}.gz sur $HOSTNAME à $date" <strong>adresse_email@domaine.tld</strong> # Redémarrage de l'<strong>application</strong> $ sudo systemctl stop <strong>application</strong> && sudo systemctl start <strong>application</strong> |
Ajouter les droits d’exécution au script
1 |
$ sudo chmod +x /opt/scripts/hprof.sh |
Relancer le daemon incron
1 |
$ sudo service incrond restart |
Faire le test, cela enverra un mail suite a l’événement “IN_CLOSE_WRITE” (description ci dessous)
1 |
$ sudo touch /var/tmp/transformer/hprof/test |
Voici la liste des é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 | 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 | 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 |
Source: https://doc.ubuntu-fr.org/incron#configurer_les_dossiers_et_les_actions_a_effectuer