Introduction

Cron, qui est la troncation de crontab, lui-même troncation de chrono table, est un programme en mode daemon présent sur Linux qui a pour rôle d’exécuter des scripts planifiés. Il est possible avec ce programme d’exécuter une tâche ponctuelle ou cyclique. Le service Cron porte le nom de « crond ».

Cron permet de créer des cycles simples (journalier, hebdomadaire, mensuel…) et des cycles plus complexes (le 15 du mois à 17h05, un jour sur deux, les semaines paires d’un mois impair…).

Principe de fonctionnement

Pour ouvrir le programme Cron :

#crontab -e

Sur certains systèmes, lors de la première ouverture, il vous est demandé de choisir un éditeur :
Choisissez alors l’éditeur avec lequel vous avez l’habitude de travailler.

Select an editor. To change later, run 'select-editor'.
1. /bin/nano        <---- easiest
2. /usr/bin/vim.tiny
Choose 1-2 [1]:

Le service cron est lancé avec le compte Root afin d’avoir des droits suffisamment élevés pour certaines tâches. Sous certains Unix, même lorsque la tâche est désactivée (kill) le programme est automatiquement relancé par le système.

La commande /usr/bin/crontab est, en principe, réservée à Root. On peut toutefois l’autoriser à certains utilisateurs. Pour cela, on dresse la liste des utilisateurs autorisés dans /etc/crond.allow. De la même manière, on peut mettre dans /etc/crond.deny la liste des utilisateurs non autorisés.

Mettre en place sa tâche planifiée

Une fois le fichier ouvert, il ne vous reste plus qu’à entrer les 6 champs dans l’ordre suivant :

  1. Minute (de 0 à 59)
  2. Heure (de 0 à 23)
  3. Jour du mois (de 1 à 31)
  4. Numéro du mois (de 1 à 12)
  5. Jour de la semaine (0 à 6) Attention : 0 = Dimanche, 1 = Lundi, […], 6 = Samedi
  6. Commande, telle qu’elle serait saisie en shell

Remarques

Les 5 premiers champs peuvent prendre les valeurs suivantes :

  • Un unique nombre entier et valide dans la tranche.
  • Une liste de nombres entiers et valides dans la tranche (par exemple 1,3,5 dans le champ « mois » exécutera la tâche en Janvier, Mars et Mai).
  • Un intervalle de nombres entiers valides dans la tranche (par exemple 1-5 dans le champ « jour » exécutera la tâche du Lundi au Vendredi).
  • Le symbole * signifie « toutes les valeurs possibles du champ » (par exemple * dans le champ « heure » exécutera la tâche toutes les heures).
  • Le symbole /<nb unités> découpe la valeur, la liste ou l’intervalle en nombre d’unités.

Exemples d’utilisation

  • */5 dans le champ « minutes » signifie « toutes les 5 minutes »
  • */3 dans le champ « mois » signifie « tous les trimestres »
  • 10-18/2 dans le champ « heure » signifie « toutes les 2 heures entre 10h et 18h »

Exécution du script « backup.sh » tous les jours à 5h15 du matin :

15    5    *    *    *    /root/backup.sh

Éteindre le poste en fin de journée du lundi au vendredi (-r affiche un message de shutdown imminent et demande confirmation à l’utilisateur)

30    18    *    *    1-5    /sbin/shutdown -r

Un peu plus complet : Ajoute la ligne « Vive les vacances ! » dans le fichier « congés » de Paul toutes les demis-heure entre 15h et 19h tous les 2 jours lors des 2 premières semaines de Juillet – Aout

*/30    15-19    1-15    7,8    */2    echo "Vive les vacances !" >> /home/paul/congés

Enregistrez et quittez. Puis vérifier la saisie avec la commande :

#crontab -l

Pour supprimer toutes les tâches planifiées :

#crontab -r

Raccourcis

RaccourcisDescriptionÉquivalent
@rebootAu démarragen/a
@yearlyTous les ans0 0 1 1 *
@annuallyTous les ans0 0 1 1 *
@monthlyTous les mois0 0 1 * *
@weeklyToutes les semaines0 0 * * 0
@dailyTous les jours0 0 * * *
@midnightToutes les nuits0 0 * * *
@hourlyToutes les heures0 * * * *
Utilisation des raccourcis pour les tâches Cron

Sauvegarde avec la commande TAR et Cron

Fonctionnement de la commande TAR :

tar -czfs <fichier>.tar.gz <fichier1> <fichier2> <dossier1> <...>

On souhaite sauvegarder tous les vendredis soir à 23h30 tout le répertoire /data/finances présent sur le serveur en production vers un fichier compressé « backup_finance.tar.gz » présent dans le dossier de sauvegardes.

Ouverture du programme Cron :

#crontab -e

On crée la tâche de compression et de sauvegarde :

30    23    *    *    5    tar -czvf /backup/backup_finance.tar.gz /data/finances

Aller plus loin…

Commandes utiles

Ces commandes ne fonctionnement pas pour toutes les distributions Linux et Unix

Indique l’horaire de la dernière tâche exécutée pour l’ensemble des utilisateurs :

#ls -lut /etc/init.d/cron

Extrait du journal du système les informations concernant la table Cron :

grep -w cron /var/log/syslog

Rechargement du deamon Cron :

/etc/init.d/cron force-reload

Changement d’heure

Lors du passage de l’heure d’hiver à l’heure d’été, l’heure officielle passe de 2h à 3h. Les tâches programmées entre 02h00 et 02h59 ne seront pas exécutées.

Lors du passage de l’heure d’été à l’heure d’hiver, l’heure officielle passe de 02h59 à 02h00. Les tâches programmées entre 02h00 et 02h59 seront donc exécutées deux fois.

Afin d’éviter les problèmes qui pourraient survenir, il est recommandé de mettre votre système en Temps Universel Coordonné (UTC) qui n’est pas sujet à ces règles de changement d’heure.

Les Forks Linux de Cron

Mcron : Supporte la mise en place des tâches planifiées traditionnelles mais également les fichiers de configuration écrits en Scheme. Il permet ainsi d’ajouter le conditionnel.
Par exemple : si la charge des disques est trop importante le lundi entre 10h et 12h, supprime les fichiers /tmp

Anacron : Très similaire à Cron, à la différence qu’il ne suppose pas que la machine tourne en permanence. Il peut donc être utilisé sur des systèmes qui ne tournent pas 24h/24h. À la différence de Cron, ce n’est pas un deamon, il tourne que s’il y a des tâches à exécuter.
Si lors du démarrage de la machine, des tâches devaient être faites alors que la machine était éteinte, il lance ces tâches au démarrage.

Fcron : Fusion de Cron et Anacron avec des fonctionnalités supplémentaires. On rencontre une syntaxe Crontab plus évolué. Il est aussi possible d’interagir avec le deamon via une commande fcrondyn pour savoir ce qu’il fait ou ce qu’il fera.

Laisser un commentaire

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

Commentaires

shlapapanawinox 03/07/2020 at 21:13

Актуальное зеркало букмекерских контор, переходи по ссылке и получай бонус за первый депозитhttps://rabocheezerkalo.ru

Réponse

Laisser un commentaire

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