dossiers de cron |
/etc/crond.daily/ | exécution quotidienne (chaque jour à 04h02) |
/etc/crond.hourly/ | exécution chaque heure (chaque heure + 1 minute) |
/etc/crond.weekly/ | exécution hebdomadaire (le dimanche à 04h22) |
/etc/crond.monthly/ | exécution mensuelle (le 1er du mois à 04h42) |
cron.allow | si existe, seuls les utilisateurs figurant dans ce fichier peuvent créer, modifier, afficher ou supprimer des fichiers crontab. on peut ajouter root |
cron.deny | Aucun des noms d'utilisateur du fichier cron.deny par défaut ne peut accéder à la commande crontab. |
ni cron.allow ni cron.deny | si les deux n'existent, les privilèges de superutilisateur sont requis pour exécuter la commande crontab . |
syntaxe générale |
La syntaxe générale de cron est en OU, l'outil par default est /bin/sh. cron interprète le % il faut donc l'échapper dans les commandes |
mm |
hh |
jj |
MMM |
JJJ |
tâche |
représente les minutes (de 0 à 59) |
représente l'heure (de 0 à 23) |
représente le numéro du jour du mois (de 1 à 31) |
représente l'abréviation du nom du mois (jan, feb, ...) ou bien le numéro du mois (de 1 à 12) |
représente l'abréviation du nom du jour ou bien le numéro du jour dans la semaine : 0 = dimanche 1=lundi [...] 7=dimanche |
0 0 13 * 5 tâche |
|
* |
à chaque unité (0, 1, 2, 3, 4…) |
5,8 |
les unités 5 et 8 |
2-5 |
les unités de 2 à 5 (2, 3, 4, 5) |
*/3 |
toutes les 3 unités (0, 3, 6, 9…) |
10-20/3 |
toutes les 3 unités, entre la dixième et la vingtième (10, 13, 16, 19) |
quelques exemples de dâtes |
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 |
Tous les derniers jours du mois (la barre oblique inversée devant % est obligatoire en édition de crontab, contrairement à l'exécution manuelle de la commande) : | 0 0 28-31 * * [ `/bin/date +\%d` -gt `/bin/date +\%d -d "1 day"` ] && df >> /tmp/df.log |
Tous les derniers dimanches du mois : Première solution : comparer tous les dimanches avec celui de la semaine d'après. | 0 0 * * 0 [ `/bin/date +\%d` -gt `/bin/date +\%d -d "7 day"` ] && df >> /tmp/df.log |
Tous les derniers dimanches du mois : Deuxième solution : tester la dernière semaine tous les mois. | 0 0 25-31 1,3,5,7,8,10,12 0 my-script.sh
0 0 24-30 4,6,9,11 0 my-script.sh
0 0 22-29 2 0 my-script.sh |
quelques exemples de commandes |
on force /bin/bash et on filtre la sortie, cron envoie des mails sauf quand l'erreur contient "Warningz: Local version" | 30 13 * * 1-5 root /bin/bash -c '/usr/local/sbin/sauvegarde.sh 2> >(grep -v "Warning: Local version")' |
on filtre la sortie d'erreur mais on continue à rediriger la sortie standard dans un fichier | 35 13 * * 1-5 root /bin/bash -c '/usr/local/sbin/supression_sauvegarde.sh 2> >(grep -v "Warningz: Local version") 1>> /var/log/sauvegarde.log' |
on redirige tout à la fin d'un fichier | 30 03 01 Jan,Apr,Jul,Oct * root /bin/bash -c 'certbot renew --cert-name mon_super_site.fr --dry-run 2>&1>> /var/log/certificats.log' |
at |
commande at |
at |
permet d'executer une commande dans l'avenir |
at 14:17 11/15/10 at 14:17 at> [...] |
spécificateur de temps |
minutes |
at now +5 minutes |
hours(heures) |
at now +5 hours |
days(jours) |
at now +5 >days |
weeks(semaines) |
at now +5 >days |
months(mois) |
at now +5 >days |
years(années) |
at now +1 years |
atq | lister les jobs |
atrm 13 | supprimer le job 13 |
droit sur at |
at.allow | si existe, seuls les utilisateurs figurant dans ce fichier peuvent créer, modifier, afficher ou supprimer des fichiers crontab. on peut ajouter root |
at.deny | Aucun des noms d'utilisateur du fichier at.deny par défaut ne peut accéder à la commande crontab. |
fichiers at |
/usr/share/doc/at/timespec | |
/var/spool/cron/atjobs | Le répertoire de stockage des travaux; ce devrait être
mode 700, démon propriétaire |
/var/spool/cron/atspool | contient la liste des processus en attentes |
/proc/loadavg | |
/var/run/utmp | |
/etc/at.allow | |
/etc/at.deny | |