reformulation de certaines phrases pour être plus clair
This commit is contained in:
parent
92d52997d6
commit
081d043511
35
HowtoCron.md
35
HowtoCron.md
|
@ -3,13 +3,11 @@ categories: sysadmin web
|
||||||
title: Howto Cron
|
title: Howto Cron
|
||||||
...
|
...
|
||||||
|
|
||||||
* man 5 crontab : <https://manpages.debian.org/jessie/cron/crontab.5.en.html>
|
Le service **cron** (diminutif de *crontab*, pour **c**h**ron**o **tab**le) est le planificateur de tâches standard sur les systèmes UNIX/Linux. Il permet le déclenchement de commandes à des dates récurrentes et à la minute près.
|
||||||
|
|
||||||
Le service **cron** (diminutif de *crontab*, pour **c**h**ron**o **tab**le) est le planificateur de tâches standard sur les systèmes UNIX/Linux. Il permet le déclenchement de commandes à des dates récurrentes (à la minute près).
|
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
En général le paquet **cron** est installé et le service tourne déjà :
|
Très souvent, on le retrouve déjà installé :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
# systemctl status cron
|
# systemctl status cron
|
||||||
|
@ -21,9 +19,15 @@ En général le paquet **cron** est installé et le service tourne déjà :
|
||||||
└─492 /usr/sbin/cron -f
|
└─492 /usr/sbin/cron -f
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
Sinon, la commande suivante permet de l'obtenir :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
apt install cron
|
||||||
|
~~~
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
|
|
||||||
La configuration se trouve dans le fichier `/etc/crontab` :
|
Les paramètres principaux sont définit dans le fichier `/etc/crontab` :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
SHELL=/bin/sh
|
SHELL=/bin/sh
|
||||||
|
@ -43,26 +47,29 @@ 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 )
|
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 observera que :
|
||||||
|
|
||||||
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.
|
- Le shell par défaut sera /bin/sh
|
||||||
|
- Les tâches crons auront un accès facilité à l'ensemble de répertoires où se trouvent les programmes exécutables.
|
||||||
|
- Des dates sont définies pour executer des actions inclus dans les répertoires dédiés `/etc/cron.*`.
|
||||||
|
|
||||||
|
D'autres options de configurations peuvent être pris en charge par défaut pour toutes les tâches crons via le fichier `/etc/default/cron`. Notamment en ce qui concerne le niveau de verbosité de la journalisation, définir des variables d'environnements, etc.
|
||||||
|
|
||||||
# Utilisation
|
# Cas d'usage
|
||||||
|
|
||||||
## /etc/cron.{hourly,daily,weekly,monthly}/ et /etc/cron.d/
|
## Les dossiers /etc/cron.*/ et /etc/cron.d/
|
||||||
|
|
||||||
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 lancer un script à **une date précise** : il suffit de le rendre exécutable et de le placer dans l'un des répertoires `/etc/cron.*/` 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 :
|
Pour lancer un script à **une fréquence personnalisée** : il suffit de créer un nouveau fichier pour le placer dans `/etc/cron.d/` incluant une suite de paramètres pour indiquer la fréquence et l'utilisateur qui doit lancer la commande, par exemple :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
30 05 * * 0 www-data /usr/local/adm/savelog-weekly
|
30 05 * * 0 www-data /usr/local/adm/savelog
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
> **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).
|
> Attention : En cas d'erreur de syntaxe dans un script, tous les autres tâches crons du même répertoire ne seront pas lancés ! Il faut donc réserver cette utilisation à des scripts bien vérifiés!
|
||||||
|
|
||||||
> **Attention** : Les noms de scripts contenant des points sont ignorés par cron. On pourra par exemple utiliser cette particularité pour désactiver un script, en ajoutant .old ou .disabled à la fin de son nom.
|
> 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 -e
|
||||||
|
|
Loading…
Reference in a new issue