4 - Shell
Les crontabs
La majorité des distributions Linux et Unix inclues le daemon « Cron » qui manipule les crontabs (chrono tables). Ces « tables » permettent de programmer des travaux à exécuter de façon répétitive.
Crontab système
- /etc/crontab
- La table de travaux du système
- /etc/cron.d/*
- Les fichiers de ce dossier sont automatiquement ajouter a la table des travaux du système
Chacune des tables doit contenir des lignes qui contiennent à la suite les données suivantes :
- minutes [0..59]
- heures [0.23]
- jour_du_mois [1.31]
- numéro du mois [1..12]
- jour de la semaine [0..7]
- utilisateur
- tache
Les champs temporel peuvent-êtres divisé pour indiquer une periodicité spécial, Exemple : demander à root de ne rien faire toutes les 5 minutes :
*/5 * * * * root echo -n '' >/dev/null
Les champs temporel peuvent contenir plusieurs valeurs séparé par des virgules. ou des plages séparé par des tiret. Exemple : demander à root de ne rien faire a 8h et à 18h, 19h et 20h :
* 8,18-20 * * * root echo -n '' >/dev/null
Dans le champ « jour de la semaine », le dimanche peut être invoqué avec deux chiffres : le 0 ou le 7
Le champ « utilisateur » indique avec quel identité la tâche sera effectuée.
Le champ « tâche » peut contenir n'importe quel ligne de commande
Crontab utilisateur
Les utilisateurs peuvent créer eux-même une crontab via la commande crontab -e. Le fichier de leur table sera stocker ici :
- /var/spool/cron/crontabs/*
Les tables utilisateur non pas de champ « utilisateur ». Pour afficher la table d'un utilisateur, utilisez la commande crontab -l.
Exemples
# Tous les jours à 23 h 30 :
30 23 * * * df >> /tmp/df.log
# Toutes les heures, passées de 5 minutes :
5 * * * * df >> /tmp/df.log
# Tous les premiers du mois à 23 h 30 :
30 23 1 * * df >> /tmp/df.log
# Tous les lundis à 22 h 28 :
28 22 * * 1 df >> /tmp/df.log
# Tous les vendredis et tous les 13 de n'importe quel mois à 11 h 22 :
22 11 13 * 5 df >> /tmp/df.log
# Tous les vendredis 13 de n'importe quel mois à 11 h 22 :
22 11 13 * * [ `date '+\%w'` -eq 5 ] && df >> /tmp/df.log
# Du 2 au 5 de chaque mois à 10 h 12 :
12 10 2-5 * * df >> /tmp/df.log
# Tous les jours pairs du mois à 23 h 59 :
59 23 */2 * * df >> /tmp/df.log
# Tous les jours ouvrés à 22 heures :
0 22 * * 1-5 df >> /tmp/df.log
# Toutes les 5 minutes :
*/5 * * * * df >> /tmp/df.log
source: Wikipedia
Dossier « cronisé »
Enfin, s'ajoute quatre dossiers qui peuvent contenir des scripts, des binaires ou des liens vers ces types de fichiers et qui seront exécuter de façon périodique : chaque heures, jours, semaines ou mois.
- /etc/cron.hourly/*
- /etc/cron.daily/*
- /etc/cron.weekly/*
- /etc/cron.monthly/*
