Aide

« Retour

Cron

Le Cron-Deamon est un service vous permettant d'exécuter des scripts et des programmes de manière temporelle. Les commandes à exécuter sont enregistrées dans un tableau. Ce dernier porte le nom de Crontab. Découvrez dans cet article comment accéder au tableau Crontab via SSH et comment exécuter des scripts tout comme des programmes de manière temporelle.

Afin d'utiliser Cron, vous devez établir une connexion SSH avec votre projet. Saisissez ensuite la commande crontab -e afin d'ouvrir le fichier Crontab.

Remarque : Le fichier Crontab se trouve dans le répertoire /var/spool/cron.

Éditer le fichier Crontab avec l'éditeur vi

Lorsque vous ouvrez crontab -e, l'éditeur vi s'ouvre par défaut.

Remarque : Pour éditer le fichier Crontab avec l'éditeur Nano, remplacez la commande susmentionnée par la commande EDITOR=nano crontab -e.

L'éditeur vi dispose d'un mode d'insertion et d'un mode de commande. Vous pouvez accéder au mode d'insertion en pressant la touche i. Dans ce mode, les caractères saisis sont immédiatement ajoutés dans le texte. Afin d'accéder au mode de commande, pressez ensuite la touche Echap (ESC). Lorsque vous utilisez le mode de commande, vos saisies au clavier sont interprétées en tant que commande.

Remarque : vi ne peut pas être fermé lorsque vous utilisez le mode d'insertion. Par conséquent, passez toujours en mode de commande pour arrêter vi.

Voici les commandes principales :

Commande Description
dd Supprimer la ligne actuelle
u Annuler la dernière modification
J Fusionner les lignes
o Insérer une nouvelle ligne sous la ligne actuelle
P Coller les données copiées à la position du curseur
:q! Fermer l'éditeur sans enregistrer les modifications
:wq Enregistrer le texte et fermer l'éditeur

Structure du fichier Crontab et syntaxe Crontab

Les commandes que Cron doit exécuter sont enregistrées dans un tableau appelé Crontab. Ce dernier contient les colonnes suivantes :

Minutes (0 - 59) Heures (0 - 23, 0 = minuit) Jours (1 - 31) Mois (1 - 12) Jour de la semaine (0 - 6, 0 = dimanche) Commande ou chemin du répertoire et nom du script
* * * * * par ex. /var/www/directory/myscript.sh

Les 5 premières colonnes de ce tableau contiennent des données temporelles. Les entrées dans ces colonnes ne doivent pas contenir d'espace. La sixième colonne contient la commande concernée ou le chemin du répertoire et le nom du script souhaité. Les colonnes sont séparées par des espaces.

Avertissement : Assurez-vous, lors de la saisie de la commande, que le chemin est toujours indiqué en entier. De plus, après la saisie de la commande, vous devez toujours insérer un saut de ligne (par exemple avec '\n').

Dans l'exemple suivant, le répertoire /var/www/html/sites doit être sauvegardé à 04h01 le 1er janvier et tous les lundis du mois de janvier :

01 04 1 1 1 cp -a /var/www/html/sites /var/www/html/backups

La sauvegarde sera alors enregistrée dans le répertoire /var/www/html/backups.

Afin de sauvegarder le répertoire /var/www/html/sites quotidiennement à 04h01, veuillez entrer la commande suivante :

01 04 * * * cp -a /var/www/html/sites /var/www/html/backups

Si le répertoire doit être sauvegardé toutes les 10 minutes, veuillez saisir la commande suivante :

*/10 * * * cp -a /var/www/html/sites /var/www/html/backups

Afin d'exécuter la commande à 8 heures, 9 heures et 10 heures, veuillez saisir la commande au format suivant :

* 8-10 * * cp -a /var/www/html/sites /var/www/html/backups
Remarque : Vous pouvez également saisir cette indication de temps au format suivant : 8,9,10

Afin de sauvegarder le répertoire /var/www/html/sites pendant les périodes de janvier et de juin à 04h01, 04h31, 05h01 et 05h31 quotidiennement entre les 1er et 15 de chaque mois, veuillez saisir la commande suivante :

01,31 04,05 1-15 1,6 * cp -a /var/www/html/sites /var/www/html/backups

Chaînes de caractères (strings) prédéfinies pour la spécification d'indications de temps

Vous avez également la possibilité d'utiliser des chaînes de caractères (strings) prédéfinies afin de spécifier une indication temporelle pour une tâche cron. Celles-ci sont listées ci-après :

String Signification Remplace l'entrée suivante dans Crontab
@reboot A lieu une seule fois, lors du démarrage du système
@yearly Une fois par an 0 0 1 1 *
@annually Une fois par an 0 0 1 1 *
@monthly Une fois par mois 0 0 1 * *
@weekly Une fois par semaine 0 0 * * 0
@daily Une fois par jour 0 0 * * *
@midnight Une fois par jour 0 0 * * *
@hourly Une fois par heure 0 * * * *

Exécuter des scripts avec Cron

Afin de combiner l'exécution de plusieurs commandes ou programmes, vous pouvez créer un script. Ensuite, vous pouvez exécuter le script de manière temporelle avec Cron. Vous trouverez ci-après la description de la création d'un script et d'une entrée Crontab à titre d'exemple :

  1. Ouvrez l'éditeur.
  2. Ajoutez le script souhaité au format suivant :

    #!/bin/bash cp -a /var/www/html/sites /var/www/html/backups cp -a /var/www/html/index.php /var/www/html/backups 
  3. Sauvegardez le script dans le répertoire /var/www/html/cronscripts. Attribuez un nom pertinent au fichier.

  4. Afin que le script puisse être exécuté sans mention de l'interprète, saisissez la commande suivante :

    chmod +x /var/www/html/cronscripts/backup.sh
  5. Saisissez la commande crontab -e.
  6. Ajoutez une entrée dans le tableau Crontab.

    01 04 * * * /var/www/html/cronscripts/backup.sh
  7. Afin d'accéder au mode de commande, pressez la touche Echap (ESC).
  8. Saisissez la commande :wq pour enregistrer vos modifications.

Afficher la liste des tâches cron créées

La commande suivante vous permet d'afficher une liste des tâches cron créées :

crontab -l

Fichiers Log

Toutes les actions exécutées par Cron sont consignées dans le fichier $CRON_LOG_FILE. Ce fichier se trouve dans la plupart des cas dans le répertoire /var/spool/cron.

Notifications

La variable MAILTO vous permet de recevoir une notification par email lorsqu'une erreur survient lors du traitement d'une tâche cron. Cette variable est mentionnée dans le tableau Crontab. Si vous indiquez une adresse email, le destinataire est informé de toutes les actions exécutées par Cron.