diff --git a/HowtoCron.md b/HowtoCron.md index 28bbf81f..38a50875 100644 --- a/HowtoCron.md +++ b/HowtoCron.md @@ -72,18 +72,30 @@ Pour lancer un script à **une fréquence personnalisée** : il suffit de créer > Attention : Les noms de scripts contenant des points sont ignorés. Cette particularité est utile pour désactiver un script en ajoutant .disabled comme extension. -## crontab -e +## crontab -Pour ajouter un cron manuellement, on conseille d'utiliser la commande : +Cette commande permet d’éditer/lister/supprimer les tâches planifiées gérées par le service cron et son automatiquement liée à des comptes utilisateurs. Elles sont conservées dans /var/spool/cron/. L'avantages de cette commande est la vérification syntaxique en quittant l'éditeur. + +Pour ajouter une tâche cron : ~~~ -$ crontab -e -# crontab -u jdoe -e +crontab -e ~~~ -L'un des avantages de cette commande est que la syntaxe sera vérifiée en quittant l'éditeur. +> Attention : Méfiez-vous de la touche "r" qui est proche de la touche "e" sur un clavier Azerty ou Qwerty où `crontab -r` efface définitivement toute votre crontab! -Pour lancer une commande à une fréquence personnalisée, la syntaxe est : +Pour lister les tâches cron : + +~~~ +crontab -l +~~~ + + +## La syntaxe + +On peut s'aider de [crontab guru](https://crontab.guru/) pour être sûr de ne pas faire d'erreur sur l'horaire. + +Plus en détail, la syntaxe complète est : ~~~ minutes heures jours mois jour/semaine commande @@ -104,34 +116,19 @@ Exemples de crontab : @daily /usr/local/bin/minuit-check ~~~ -On peut utiliser les mots clés `@hourly`/`@daily`/`@weekly`/`@monthly` 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). +On peut utiliser les mots clés `@hourly`/`@daily`/`@weekly`/`@monthly` pour lancer à la première minute de chaque heure/jour/semaine/mois (à ne pas confondre avec les répertoires /etc/cron.* qui sont lancés à des dates particulières). -Pour [plus d'informations sur la syntaxe](https://manpages.debian.org/jessie/cron/crontab.5.en.html) : +Pour plus de détails sur les recommandations sur l'écriture de scripts à mettre en crontab voir [TipsDevWeb#scripts-en-crontab](). -~~~ -$ 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` ! - -Pour plus de détails sur l'utilisation de la commande `crontab` en tant qu'utilisateur, voir [HowtoCrontab](), et pour des recommandations sur l'écriture de scripts à mettre en crontab voir [TipsDevWeb#scripts-en-crontab](). - -### variables +## variables Plusieurs variables peuvent être utilisées dans une crontab : -`PATH` : pour redéfinir le PATH des commandes lancés +`PATH` : 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 +`SHELL` : remplacer le shell /bin/sh utilisé par défaut par /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. +`MAILTO` : Un email est envoyé à l'utilisateur lorsqu'une commande génère une sortie (stdout/stderr). On peut changer le destinataire ainsi qu'en mettre plusieurs ou empêcher l'envoi d'un message avec `MAILTO=""`. Ces variables peuvent être définies plusieurs fois, notamment `MAILTO` qui pourra précéder chaque ligne de cron : @@ -144,12 +141,6 @@ 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 : @@ -160,7 +151,6 @@ file = /var/log/cron.log mailto = root ~~~ - # FAQ ## Peut-on écrire un cron dans /etc/crontab ?