Table of Contents

LINUX: Gestion crontab

Introduction

Crontab est un outil qui permet de lancer des applications de façon régulière, pratique pour un serveur pour y lancer des scripts de sauvegardes, etc.

Installation de crontab

Crontab est souvent installé par défaut.

Configuration de crontab

Pour être autorisé à utiliser la commande crontab, il faut que l'utilisateur soit présent dans le groupe cron.

Les fichiers /etc/cron.allow et /etc/cron.deny permettent de définir les droits d'utilisation sur crontab.

Si le fichier /etc/cron.allow existe, alors vous devez être présent dans ce fichier pour être autorisé à utiliser cette commande. Si le fichier /etc/cron.allow n'existe pas mais que /etc/cron.deny existe, alors vous ne devez pas être mentionné dans le fichier /etc/cron.deny afin de pouvoir utiliser cette commande.

Ne créer qu'un seul des deux fichiers pour donner/refuser l'accès à la commande crontab.

L'utilisateur root passe outre ces fichiers

Les fichiers /etc/cron.allow et /etc/cron.deny gèrent l'accès à la commande crontab. Cela signifie que si un utilisateur possède un crontab et qu'ensuite on le supprime de liste de /etc/cron.allow, les tâches seront quand même effectuées. Il faut supprimer le crontab de cet utilisateur situé dans /var/spool/cron/crontabs

Utilisation de la commande crontab

Afficher la liste des actions

Pour afficher le contenu du fichier crontab :

$ crontab -l

Supprimer toutes les actions

Pour supprimer toutes les actions du fichier crontab :

$ crontab -r

Editer les actions

Pour éditer les actions du fichier crontab :

$ crontab -e

Le crontab s'ouvre avec un éditeur par défaut. Sous Fedora, c'est vi. Si on veut utiliser nano :

$ export EDITOR=nano

Syntaxes des actions de la crontab

Présentation

Voici de manière schématique la syntaxe à respecter d'un crontab:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  user command to be executed

Le fichier de configuration de est constitué des différentes lignes. Chaque ligne correspond à une action:

mm hh jj MMM JJJ [user] tâche > log

Pour chaque unité, on peut utiliser les notations suivantes :

Exemples

Exécution tous les jours à 22h00 d'une commande et rediriger les infos dans sauvegarde.log :

00 22 * * * /root/scripts/sauvegarde.sh >> sauvegarde.log

Exécution d'une commande toutes les 6 heures :

00 */6 * * * /root/scripts/synchronisation-ftp.sh

Exécution d'une commande toute les heures :

00 */1 * * * /usr/sbin/ntpdate fr.pool.ntp.org

Exécution d'une commande toutes les minutes uniquement les lundis :

* * * * 1 /root/script/commandes-du-lundi.sh

Exécution d'une commande une fois par an à une heure précise (ici le 25 décembre à 00h15) :

15 00 25 12 * echo "Le père Noël est passé !"

Exécuter chaque jour, de chaque mois à 2:15 la commande eix-sync

15 02  * *  * /usr/bin/eix-sync

Envoi de mail

Par défaut, cron envoie un message à l'utilisateur qui a planifié sa tâche.

Pour ne pas envoyer de façon automatique ce message à l'utilisateur (ou utilisateur@domaine.ext si un agent tel que postfix a été configuré) il faut indiquer sur la première ligne du crontab -e

MAILTO=""