vendredi , 24 février 2017

Mise en place d’une tâche cron sous Linux

La commande cron permet de planifier l’activation de commandes. Très utilisée dans l’administration de réseaux celle-ci permet donc de lancer des commandes. L’application cron tourne en tâche de fond et attend qu’une commande lui soit donnée avec une heure pour l’exécution de celle-ci. A l’heure programmée, cron va exécuter la commande.

Vous pouvez voir la mise en place d’une tâche cron sur cette vidéo. Dans celle-ci, l’objectif est la création d’un fichier test-cron à 18h27.

https://www.youtube.com/watch?v=DLkM-PFE1gs

Commande cron

Les répertoires de la commande cron sont répartis selon plusieurs planifications :

/etc/cron.hourly = exécution de la tâche toutes les heures
/etc/cron.daily = exécution de la tâche tous les jours
/etc/cron.weekly = exécution de la tâche toutes les semaines
/etc/cron.monthly = exécution de la tâche tous les mois

Il vous suffit de mettre un script shell dans un de ses répertoires pour que celui-ci soit exécuté en fonction.

Mais si on souhaite mettre en place des scripts ou des commandes à des heures précises ? La réponse ci-dessous :

Utiliser crontab

Deux solutions, vous pouvez utiliser le répertoire /etc/cron.d ou la commande crontab. La syntaxe entre les deux est la même. Pour ma part j’utilise crontab.

Pour planifier une tâche, vous devez ouvrir le fichier crontab par le biais de la commande crontab -e

Dans le cas de la capture ci-dessous, EDITOR=gedit permet de choisir l’éditeur de texte. J’utilise Gedit mais vous pouvez également utiliser celui de votre choix comme Nano ou Vim ou autre.

Commande cron

Un fichier s’ouvre, allez à la dernière ligne et insérer les instructions pour planifier votre commande. La syntaxe pour réaliser votre commande est la suivante :

* * * * * commande

Première étoile = les minutes, dans notre cas j’indiquerais 27 par la suite, car je souhaite que ma commande s’exécute à 18h27. Elle doit être comprise entre 0 et 59.

Deuxième étoile = les heures, dans notre cas je mettrais donc 18. Elle doit être comprise entre 0 et 23.

Troisième étoile = les jours, pour le jour du mois, donc celle-ci doit-être comprise entre 0 et 31. Attention aux mois en 30 jours, au mois de février et aux années bissextiles 🙂

Quatrième étoile = les mois, vous pouvez choisir le mois où doit s’exécuter la commande. Elle doit être comprise entre 1 et 12.

Cinquième étoile = les jours de la semaine, attention les nombres possibles vont de 0 à 7 mais les deux chiffres 0 et 7 correspondent au dimanche.

Commande = votre commande ultime.

Lorsque vous laissez une étoile par défaut, par exemple dans le cas des jours, cela signifie que son exécution sera tous les jours. Je vous ai mis quelques astuces complémentaires à la fin.

Un exemple : 30 5 * * 7 touch /home/votr_nom/nouveau_fichier

Cette commande créera un fichier nommé « nouveau_fichier » dans mon répertoire tous les dimanches à 5h30. Reprenons notre cas, j’indique la commande :

27 18 * * * touch /home/fabplug/Bureau/test-cron

Cela va donc me créer un fichier « test-cron » à 18h27 sur mon bureau. J’enregistre et je quitte le fichier.

Configurer cron

Une fois mon fichier quitté, un message m’indique qu’un nouvel élément est installé. J’attends désormais 18h27 pour voir si l’exécution fonctionne.

Utiliser crontab

Comme convenu à 18h27 mon fichier test-cron est créé sans que je ne touche à rien.

Utiliser cron

Astuces pour la commande cron

Vous pouvez également utiliser des planifications prédéfinies pour cron :

@reboot = La commande sera exécutée une fois au démarrage de la machine.
@hourly = Commande exécutée toutes heures
@daily = Commande exécutée tous les jours à minuit
@weekly = Commande exécutée toutes les semaines
@monthly = Commande exécutée tous les mois
@yearly = Commande exécutée tous les ans

Pour les utiliser, c’est simple : @reboot commande

Autres symboles :

Symbole pour permettre un intervalle. Ex : 10 11 1-5 * * commande. Cette commande sera lancée les 5 premiers jours de chaque mois à 11h10.

Symbole / pour permettre des répétitions. Ex : */10 * * * commande. Cette commande sera lancée toutes les 10 minutes.

Symbole , pour indiquer plusieurs valeurs. Ex : 30 9 2,10,20 * * commande. Cette commande sera lancée le 2, le 10 et le 20 de chaque mois.

Laisser un commentaire

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