ajout d'infos
This commit is contained in:
parent
5075407fd6
commit
8193906e76
120
HowtoCron.md
120
HowtoCron.md
|
@ -33,30 +33,104 @@ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
|||
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
|
||||
~~~
|
||||
|
||||
On trouve notamment des dates fixées pour les actions définies dans les répertoires `/etc/cron.{hourly,daily,weekly,monthly}` : nous conseillons de modifier ces horaires fixes, pour éviter des déclenchements simultanés sur plusieurs serveurs.
|
||||
On trouve notamment des dates fixées pour les actions définies dans les répertoires `/etc/cron.{hourly,daily,weekly,monthly}/` : nous conseillons de modifier ces horaires fixes, pour éviter des déclenchements simultanés sur plusieurs serveurs.
|
||||
|
||||
On peut également modifier certaines options via le fichier `/etc/default/cron`, notamment la journalisation : par défaut `-L 5` enregistre le démarrage de chaque cron et les éventuelles erreurs, on peut passer à `-L 15` pour avoir un maximum d'informations notamment la date de fin de chaque cron.
|
||||
|
||||
|
||||
## Utilisation
|
||||
|
||||
### /etc/cron.{hourly,daily,weekly,monthly} et /etc/cron.d/
|
||||
### /etc/cron.{hourly,daily,weekly,monthly}/ et /etc/cron.d/
|
||||
|
||||
Pour lancer un script à une date fixée par le système, il suffit de le placer dans l'un des répertoires `/etc/cron.{hourly,daily,weekly,monthly}` en fonction de la fréquence souhaitée ou dans `/etc/cron.d/` où l'on peut choisir une fréquence personnalisée.
|
||||
Pour lancer un script en tant que _root_ à une date fixée par le système, il suffit de le rendre exécutable et de le placer dans l'un des répertoires `/etc/cron.{hourly,daily,weekly,monthly}/` en fonction de la fréquence souhaitée.
|
||||
|
||||
Pour une fréquence personnalisée, on peut utiliser le répertoire `/etc/cron.d/` où il faudra indiquer en plus la fréquence et l'utilisateur qui doit lancer la commande, par exemple :
|
||||
|
||||
~~~
|
||||
30 05 * * 0 www-data /usr/local/adm/savelog-weekly
|
||||
~~~
|
||||
|
||||
Attention, en cas d'erreur de syntaxe dans un script, tous les autres scripts du même répertoire ne seront pas lancés ! Il faut donc réserver cette utilisation à des scripts bien vérifiés (c'est notamment utilisé par les packages Debian).
|
||||
|
||||
### /etc/crontab
|
||||
|
||||
|
||||
|
||||
|
||||
### crontab -e
|
||||
|
||||
Pour ajouter un cron manuellement, on conseille d'utiliser la commande :
|
||||
|
||||
### Détection d'erreurs
|
||||
~~~
|
||||
$ crontab -e
|
||||
# crontab -u jdoe -e
|
||||
~~~
|
||||
|
||||
On peut ajouter la configuration suivante au logiciel log2mail pour détecter d'éventuelles erreurs de syntaxe dans /etc/crontab par exemple :
|
||||
L'un des avantages de cette commande est que la syntaxe sera vérifiée en quittant l'éditeur.
|
||||
|
||||
Pour lancer une commande à une fréquence personnalisée, la syntaxe est :
|
||||
|
||||
~~~
|
||||
minutes heures jours mois jour/semaine commande
|
||||
~~~
|
||||
|
||||
On peut utiliser __*__ pour toutes les occurences (tous les jours, ou toutes les heures, etc.). On peut également utiliser des listes à virgule (3,5,7) ainsi des intervalles (2-6) ; on peut aussi avoir des intervalles réguliers (*/15).
|
||||
|
||||
Exemples de crontab :
|
||||
|
||||
~~~
|
||||
0,30,45,51 * * * * /usr/local/adm/send-data
|
||||
*/15 * * * * /usr/local/adm/check-nis 1>/dev/null 2>&1
|
||||
00 01 * * * nice -10 find /inf -name core -exec rm -f {} \;
|
||||
10 03 * * 1-6 nice -10 /usr/local/adm/sauvegarde-daily
|
||||
30 05 * * 0 /usr/local/adm/savelog-weekly
|
||||
30 06 1 * * /usr/local/adm/savelog-monthly
|
||||
00 00 1 1 * /usr/local/bin/happy-new-year
|
||||
@daily /usr/local/bin/minuit-check
|
||||
~~~
|
||||
|
||||
On peut utiliser les mots clés @hourly/@daily/@weekly/@montly pour lancer à la première minute de chaque heure/jour/semaine/mois (à ne pas confondre avec les répertoires /etc/cron.{hourly,daily,weekly,monthly}/ qui sont lancés à des dates particulières).
|
||||
|
||||
Pour plus d'informations sur la syntaxe :
|
||||
|
||||
~~~
|
||||
$ man 5 crontab
|
||||
~~~
|
||||
|
||||
Pour lister les crons, on peut utiliser la commande :
|
||||
|
||||
~~~
|
||||
$ crontab -l
|
||||
# crontab -u jdoe -l
|
||||
~~~
|
||||
|
||||
Pour supprimer tous les crons en place, on peut utiliser `crontab -r` …mais c'est assez rare qu'on l'utilise. Il faut surtout se méfier de ne pas le taper par erreur à la place de `crontab -e` !
|
||||
|
||||
#### variables
|
||||
|
||||
Plusieurs variables peuvent être utilisées dans une crontab :
|
||||
|
||||
**PATH** : pour redéfinir le $PATH des commandes lancés
|
||||
|
||||
**SHELL** : par défaut c'est /bin/sh qui est utilisé, on peut vouloir utiliser /bin/bash par exemple
|
||||
|
||||
**MAILTO** : lorsqu'une commande génère une sortie (stdout/stderr), elle est envoyée par email à l'utilisateur. On peut changer l'email destinataire avec cette variable. On pourra notamment mettre une liste à virgule pour envoyer à plusieurs adresses, ou alors _MAILTO=""_ pour empêcher l'envoi d'un message.
|
||||
|
||||
Ces variables peuvent être définies plusieurs fois, notamment _MAILTO_ qui pourra précéder chaque ligne de cron :
|
||||
|
||||
~~~
|
||||
MAILTO=jdoe@example.com,alert@example.com
|
||||
@daily df -h
|
||||
MAILTO=""
|
||||
@hourly systemctl restart javajob
|
||||
MAILTO=alert@example.com
|
||||
@weekly /usr/local/bin/security-check
|
||||
~~~
|
||||
|
||||
#### /var/spool/cron/crontabs/
|
||||
|
||||
Les crons positionnés avec `crontab -e` sont stockés dans le répertoire `/var/spool/cron/crontabs/`
|
||||
C'est notamment utile pour réaliser des sauvegardes des crons lancés sur un serveur.
|
||||
|
||||
|
||||
## log2mail
|
||||
|
||||
On peut ajouter la configuration suivante au logiciel log2mail pour détecter d'éventuelles erreurs de syntaxe :
|
||||
|
||||
~~~
|
||||
file = /var/log/cron.log
|
||||
|
@ -64,32 +138,6 @@ file = /var/log/cron.log
|
|||
mailto = root
|
||||
~~~
|
||||
|
||||
Fichiers
|
||||
répertoire /var/spool/cron/crontabs/
|
||||
|
||||
Syntaxe : minutes heures jours mois jour/semaine commande
|
||||
"*" = toutes les occurrences, "," = liste, "-" = intervalle
|
||||
|
||||
Ex :
|
||||
|
||||
0,15,30,45 * * * * /usr/local/adm/check-nis 1>/dev/null 2>&1
|
||||
00 01 * * * nice -10 find /inf -name core -exec rm -f {} \;
|
||||
10 03 * * 1-6 nice -10 /usr/local/adm/sauvegarde-daily
|
||||
30 05 * * 0 /usr/local/adm/savelog-weekly
|
||||
30 06 1 * * /usr/local/adm/savelog-monthly
|
||||
00 00 1 1 * /usr/local/bin/happy-new-year
|
||||
|
||||
Commande :
|
||||
cron: analyse des fichiers crontabs et exécute les actions
|
||||
crontab -l, crontab -e, crontab -r
|
||||
|
||||
ps auwx | grep cron
|
||||
vim /etc/crontab
|
||||
ls /etc/cron.*
|
||||
/var/spool/cron/crontabs
|
||||
crontab -l / -e
|
||||
@hourly @daily @weekly @monthly
|
||||
man 5 crontab
|
||||
|
||||
## FAQ
|
||||
|
||||
|
|
Loading…
Reference in New Issue