Crontab
Mettre en place des tâches planifiées sur une machine Linux
Installation
sudo apt-get install cron
- 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.
Lister les tâches de l'utilisateur courant
crontab -l
Supprimer toutes les actions du fichier crontab
crontab -r
Editer les actions du fichier crontab avec son éditeur préféré
export EDITOR=nano
crontab -e
Syntaxe d'une action
# .---------------- 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
Exemples d'actions
Exécuter un script tous les jours à 22h et sauvegarder le retour dans un fichier
00 22 * * * /root/scripts/sauvegarde.sh >> sauvegarde.log
Exécuter un script toutes 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=""
Raccourcis
- @reboot # se lance au boot avec les droits utilisateurs, bien commode
- @yearly
- @annually
- @monthly
- @weekly
- @daily
- @midnight
- @hourly
Recharger la configuration
sudo service cron reload