Ceci est une ancienne révision du document !
DokuWiki
Toutes versions
Traduit par Manu complété par Les contributeurs d'Ubuntu-fr.
Qu'est-ce que Cron ?
Cron est un daemon utilisé pour programmer des tâches devant être exécutées à un moment précis. Chaque utilisateur a un fichier crontab, leur permettant d'indiquer les actions et à quelles périodes, elles devront être exécutées. Il y a également une crontab pour le système, permettant les tâches techniques, pour la mise à jour des différents programmes ou autres besoins périodiques. De plus, il existe un éditeur GTK gCrontab (paquet disponible via Synaptic dans les dépots Universe) qui permet de s'affranchir facilement des différentes commandes décrites ci-dessous.
Comment fonctionne Cron ?
Pour utiliser cron, ajoutez simplement les entrées à votre fichier crontab. Une entrée dans crontab donne, par exemple, l'heure,(et la date si non périodique) et la commande à lancer:
5 3 * * * /usr/bin/apt-get update
La première partie de l'entrée de crontab décrit quand l'action sera effectuée. Il y a cinq champs, séparés par un espace ou une tabulation, dont chacun est paramétré soit par, un nombre, une étoile (*), ou le texte approprié. Les champs sont, dans l'ordre, minute, heure, jour du mois, mois et jour de la semaine. Le mois et le jour de la semaine permettent l'utilisation d'une abréviation (suivant les jours et mois en anglais), telle que jan pour janvier (January) ou thu pour jeudi (Thursday).
L'exemple ci-dessus exécutera /usr/bin/apt-get update, chaque jour, de chaque mois à 03:05 (le cron fonctionne sur 24 h). Vous pouvez faire tourner cron toutes les 5 minutes tout au long de la journée de travail (9am-5pm) avec un message:
*/5 9-17 * * mon,tue,wed,thu,fri wall "Où en es tu ?"
ou vous rappelez un anniversaire à 9h du matin le 10 janvier chaque année:
0 9 10 jan * echo "C'est l'anniversaire de ta Maman aujoud'hui !" >>~/readme
Il existe des raccourcis interessants :
- @reboot # se lance au reboot avec les droits utilisateurs, bien commode
- @yearly
- @annually
- @monthly
- @weekly
- @daily
- @midnight
- @hourly
Cf aussi :
man 5 crontab
Commande pour Cron
Pour regarder le contenu de votre crontab ,tapez:
crontab -l
Pour éditer le fichier de votre crontab, tapez:
crontab -e
Quand vous sortez de l'éditeur, le nouveau fichier crontab sera installé. Le fichier est stocké dans /var/spool/cron/crontabs/<user> mais doit seulement être édité par l'intermédiaire de la commande crontab.
L'éditeur utilisé pour modifier la crontab peut être modifié par la commande:
sudo update-alternatives --config editor
Autres Considérations
Les commandes ci-dessus sont stockées dans un fichier crontab appartenant à votre compte d'utilisateur et exécutées avec votre niveau des permissions. Si vous voulez éxécuter, régulièrement, une commande exigeant un plus haut niveau de permission (root), vous devez utiliser le fichier crontab root (ou racine):
sudo crontab -e
Remarque : cette commande édite directement le fichier /var/spool/cron/crontabs/<utilisateur> (avec ici root comme utilisateur).
Selon les commandes à exécuter, vous devrez changer la variable PATH des utilisateurs ayant les droits root en mettant la ligne suivante au dessus de leurs fichiers crontab:
PATH=/usr/sbin:/usr/bin:/sbin:/bin
Il est important de vérifier que vos travaux dans cron fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer le travail dans la crontab pour qu'il se fasse quelques minutes plus tard et de vérifier les résultats avant de mettre, la synchronisation de cette tache, à la bonne heure. Vous pouvez également trouver utile de mettre les résultats des commandes dans un fichier texte qui notent les succès ou les échec, par exemple:
echo "Sauvegarde de nuit: $(date)" >>/tmp/mybackup.log
Pour plus d'information, regardez les pages du man pour cron et crontab (le man est détaillé sur les commandes basiques). Si votre machine est régulièrement éteinte, vous pouvez également être intéréssé par at (fait partie de l'installation de base d'Ubuntu ) et anacron (à trouver dans le dépôt `universe repository`) qui fournissez d'autres approches aux tâches programmées.