Table des matières

Utilisation de crontab


Syntaxe

Afin d'éditer la table cron, il suffit d'exécuter la commande suivante:

crontab -e

Qui lancera l'éditeur par défaut (souvent vi) présentant la table actuelle (ou un fichier vide s'il s'agit du premier lancement de crontab). Chaque ligne du fichier correspond à une tâche à exécuter, renseignée de la manière suivante:

mm hh jj MMM JJJ tâche > log

Où:

Note

Pour chaque unité de temps (minute/heure/…) les notations sont possibles:

Exemples

Imaginons que l'on souhaite mettre en place un journal automatisé (dans le fichier /logs/log_df.log par exemple) de l'espace disque libre (commande df) à des intervalles de temps précis:

Tous les jours à 23h30:

          30 23 * * * df >> /logs/log_df.log

Toutes les heures, passées de 5 minutes :

          5 * * * * df >> /logs/log_df.log

Tous les premiers du mois à 23h30:

          30 23 1 * * df >> /logs/log_df.log

Tous les lundis à 22h28:

          28 22 * * 1 df >> /logs/log_df.log

Du 2 au 5 de chaque mois à 10h12:

          12 10 2-5 * * df >> /logs/log_df.log

Tous les jours pairs du mois à 23h59:

          59 23 */2 * * df >> /logs/log_df.log

Toutes les 5 minutes:

Il est également possible d'exécuter automatiquement des commandes plus complexes à l'aide d'un script shell.
Il suffit pour cela de le déclarer en tant que tâche dans la table cron.


Redirection Erreur

Le Cas de dead.letter

c’est quoi >/dev/null?

/dev/null représente le rien.
Ce rien peut être comparé à un trou noir dans l’espace.
Ce qui à pour conséquence, que chaque flux envoyé dans ce trou noir ne pourra jamais être récupéré.

exemple de commande avec >/dev/null dans un crontab:

***4* /home/fred/script/test.sh >/dev/null

Chaques taches planifiées dans un crontab envoient un mail à l’administrateur du système(ou root), pour éviter l’envoie systématique on redirige tout le flux STDOUT dans /dev/null.
A savoir, que lorsque /dev/null est utilisé sans précision, seule la sortie du flux STDOUT est concernée.
Donc, si une erreur se produit l’administrateur sera prévenue grâce à la sortie STDERR.

c’est quoi < /dev/null?

Dans un script, il se peut qu’une commande est besoin d’une intervention humaine pour répondre à une question généralement yes ou no(y/n).

Forcer la réponse à yes

Ajouter l’option -f, exemple:

cp -f ficher1 directory/

La copie du fichier1 dans le répertoire directory est forcée.

Forcer la réponse à no

< /dev/null sera utilisé, exemple:

cp  ficher1 /directory </dev/null

Si le fichier1 existe déjà dans le répertoire, avec l’option < /dev/null, le script n’écrasera pas le fichier1 déjà présent dans directory.

c’est quoi /dev/null 2>&1

2>&1 redirige la sortie d’erreur(STDERR) vers la sortie standard(STDOUT) et la sortie STDOUT dans /dev/null.

exemple en reprenant celui de la tache cron:

*4*** /home/fred/script/test.sh >/dev/null 2>&1

Dans ce cas, l’administrateur ou root ne sera jamais si la commande c’est bien exécutées ou pas.
Sauf, si le test est prévue dans le scripte test.sh.


sylvain 2020/02/22 18:18