cron
est le démon en charge d'exécuter des commandes planifiées et récurrentes (chaque jour, chaque semaine, etc.) ; atd
est celui qui s'occupe des commandes à exécuter une seule fois, à un instant précis et futur.
locate
;
crontab -e
(ses informations sont stockées dans le fichier /var/spool/cron/crontabs/utilisateur
).
/etc/crontab
ou déposer des crontab supplémentaires dans le répertoire /etc/cron.d/
. Ces deux dernières solutions ont l'avantage de pouvoir préciser l'utilisateur sous l'identité duquel exécuter la commande.
/etc/cron.hourly/
;
/etc/cron.daily/
;
/etc/cron.weekly/
;
/etc/cron.monthly/
.
Sun
, Mon
, etc.) ;
/etc/crontab
et dans les fragments déposés dans /etc/cron.d/
, mais pas les crontabs des utilisateurs) ;
a-b
décrit l'intervalle de toutes les valeurs comprises entre a
et b
. La syntaxe a-b/c
décrit un intervalle avec un incrément de c
(exemple : 0-10/2
correspond à 0,2,4,6,8,10
). Le joker *
représente toutes les valeurs possibles.
Exemple 9.2. Exemple de crontab
#Format #min heu jou moi jsem commande # Télécharge les données tous les soirs à 19:25 25 19 * * * $HOME/bin/get.pl # Le matin à 8:00, en semaine (lundi à vendredi) 00 08 * * 1-5 $HOME/bin/fait_quelquechose # Redémarre le proxy IRC après chaque reboot @reboot /usr/bin/dircproxy
at
prévoit l'exécution d'une commande à un moment ultérieur. Elle prend l'horaire et la date prévus en paramètres sur sa ligne de commande, et la commande à exécuter sur son entrée standard. La commande sera exécutée comme si elle avait été saisie dans un interpréteur de commandes. at
conserve d'ailleurs l'environnement courant afin de pouvoir travailler exactement dans les mêmes conditions que celles de la planification. L'horaire est indiqué en suivant les conventions habituelles : 16:12
représente 16 h 12. La date peut être précisée au format JJ.MM.AA
(27.07.15
représentant ainsi 27 juillet 2015) ou AAAA-MM-JJ
(cette même date étant alors représentée par 2015-07-27
). En son absence, la commande sera exécutée dès que l'horloge atteindra l'heure signalée (le jour même ou le lendemain). On peut encore écrire explicitement today (aujourd'hui) ou tomorrow (demain).
$
at 09:00 27.07.15 <<FIN
>
echo "Penser à souhaiter un bon anniversaire à Raphaël" \
>
| mail lolando@debian.org
>
FIN
warning: commands will be executed using /bin/sh job 31 at Mon Jul 27 09:00:00 2015
at now + nombre période
. La période peut valoir minutes
, hours
(heures), days
(jours) ou weeks
(semaines). Le nombre indique simplement le nombre de ces unités qui doivent s'écouler avant exécution de la commande.
cron
, il suffit, lors d'un appel à crontab -e
, de supprimer la ligne correspondante dans la crontab où la tâche est définie. Pour les tâches at
, c'est à peine plus complexe : il suffit d'exécuter la commande atrm numéro-de-tâche
. Le numéro de tâche est indiqué par la commande at
lors de la planification mais on pourra le retrouver grâce à la commande atq
, qui donne la liste des commandes actuellement planifiées.