Manuels pour la ligne de commande

Man » Manuel cron en ligne - documentation détaillée en ligne pour la page de manuel de cron

🌍
cron - démon pour exécuter les commandes planifiées (Vixie Cron)

SYNOPSIS

cron [-f] [-l] [-L loglevel] [-n fqdn] [-x debugflags]

cron [-N]

DESCRIPTION

cron est directement invoqué par systemd(1) lors du passage aux niveaux d'exécution multi-utilisateurs.

OPTIONS

-f

Rester en mode avant-plan, ne pas lancer en tant que démon.

-l

Activer les noms conformes à LSB pour les fichiers /etc/cron.d. Ce paramètre n'affecte cependant pas l'analyse des fichiers situés dans /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly ou /etc/cron.monthly.

-n fqdn

Inclure le FQDN dans l'objet lors de l'envoi des e-mails. Par défaut, cron abrège le nom d'hôte.

-N

Exécuter les tâches cron immédiatement et quitter. Cette option est utile pour effectuer des tests.

-L loglevel

Indiquer à cron ce qu'il faut enregistrer concernant les tâches (les erreurs sont enregistrées quel que soit cette valeur) sous la forme de la somme des valeurs suivantes :

1 enregistrera le début de toutes les tâches cron

2 enregistrera la fin de toutes les tâches cron

4 enregistrera toutes les tâches ayant échoué (statut de sortie != 0)

8 enregistrera le numéro de processus de toutes les tâches cron

La valeur par défaut est d'enregistrer le début de toutes les tâches (1). L'enregistrement sera désactivé si loglevel est défini sur zéro (0). Une valeur de quinze (15) sélectionnera toutes les options.

-x debugflags

Indiquer à cron d'être plus verbeux et d'afficher des informations de débogage ; debugflags est la somme de ces valeurs :

1 "ext" : ...

2 "sch" : ...

4 "proc" : ...

8 "pars" : ...

16 "load" : ..

32 "misc" : ...

64 "test" : ...

128 "bit" : ...

NOTES

cron recherche dans son répertoire de spools (/var/spool/cron/crontabs/) les fichiers crontab (qui portent le nom des comptes dans /etc/passwd) ; les crontabs trouvés sont chargés en mémoire. Notez que les crontabs de ce répertoire ne doivent pas être accessibles directement ; la commande crontab(1) doit être utilisée pour y accéder et les mettre à jour.

cron lit également /etc/crontab, qui a un format légèrement différent (voir crontab(5)). Dans Debian, le contenu de /etc/crontab est prédéfini pour exécuter des programmes dans /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly. Cette configuration est spécifique à Debian, voir la note ci-dessous sous DEBIAN SPECIFIC.

De plus, dans Debian, cron lit les fichiers du répertoire /etc/cron.d. cron traite les fichiers de /etc/cron.d de la même manière que le fichier /etc/crontab (ils suivent le format spécial de ce fichier, c'est-à-dire qu'ils incluent le champ utilisateur). Cependant, ils sont indépendants de /etc/crontab : ils ne sont pas, par exemple, affectés par les paramètres de variables d'environnement. Ce changement est spécifique à Debian, voir la note ci-dessous sous DEBIAN SPECIFIC.

Comme /etc/crontab, les fichiers du répertoire /etc/cron.d sont surveillés pour détecter les modifications. L'administrateur système peut créer des tâches cron dans /etc/cron.d/ avec des noms de fichiers tels que "local" ou "local-foo".


/etc/crontab et les fichiers dans /etc/cron.d doivent être la propriété de root et ne doivent pas être accessibles en écriture par un autre groupe ou utilisateur. Contrairement au répertoire de spool, les fichiers sous /etc/cron.d ou les fichiers sous /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly peuvent également être des liens symboliques, à condition que le lien symbolique et le fichier vers lequel il pointe soient tous deux la propriété de root. Les fichiers sous /etc/cron.d n'ont pas besoin d'être exécutables, tandis que les fichiers sous /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly le sont, car ils sont exécutés par run-parts (voir run-parts(8) pour plus d'informations).

cron se réveille ensuite chaque minute, examine tous les fichiers crontab stockés et vérifie chaque commande pour voir si elle doit être exécutée à la minute actuelle. Lors de l'exécution des commandes, toute sortie est envoyée par courrier électronique au propriétaire du fichier crontab (ou à l'utilisateur spécifié dans la variable d'environnement MAILTO dans le fichier crontab, si elle existe) à partir du propriétaire du fichier crontab (ou à partir de l'adresse e-mail spécifiée dans la variable d'environnement MAILFROM dans le fichier crontab, si elle existe). Les copies de cron qui exécutent ces processus voient leur nom modifié en majuscules, comme on le verra dans syslog et dans la sortie de [ps]({filename}../../ps)(1).

De plus, cron vérifie chaque minute si la date de modification de son répertoire de spool (ou la date de modification du fichier /etc/crontab) a changé, et si c'est le cas, cron examine alors la date de modification de tous les fichiers crontab et recharge ceux qui ont été modifiés. Ainsi, cron n'a pas besoin d'être redémarré chaque fois qu'un fichier crontab est modifié. Notez que la commande crontab(1) met à jour la date de modification du répertoire de spool chaque fois qu'elle modifie un fichier crontab.

Des considérations particulières existent lorsque l'heure est modifiée de moins de 3 heures, par exemple au début et à la fin de l'heure d'été. Si l'heure a avancé, les tâches qui auraient dû être exécutées pendant le temps qui a été omis seront exécutées peu de temps après le changement. Inversement, si l'heure a reculé de moins de 3 heures, les tâches qui se situent dans la période répétée ne seront pas réexécutées.

Seules les tâches qui s'exécutent à une heure précise (et non spécifiées avec @hourly, ni avec '*' dans la spécification de l'heure ou de la minute) sont concernées. Les tâches qui sont spécifiées avec des caractères génériques sont exécutées en fonction de la nouvelle heure immédiatement.

Les modifications d'heure de plus de 3 heures sont considérées comme des corrections de l'heure, et la nouvelle heure est utilisée immédiatement.

cron enregistre ses actions dans le fichier syslog 'cron', et la journalisation peut être contrôlée à l'aide de la fonction syslogd(8) standard.

ENVIRONNEMENT

Si configuré dans /etc/default/cron dans les systèmes Debian, les paramètres de localisation du démon cron peuvent être gérés par l'utilisation de /etc/environment ou par l'utilisation de /etc/default/locale, les valeurs de ce dernier remplaçant les valeurs du premier. Ces fichiers sont lus et ils sont utilisés pour configurer les variables d'environnement LANG, LC_ALL et LC_CTYPE. Ces variables sont ensuite utilisées pour définir le jeu de caractères des courriers, qui par défaut est 'C'.


Cela n’affecte PAS l’environnement des tâches exécutées par cron. Pour plus d’informations sur la manière de modifier l’environnement des tâches, consultez crontab(5).

Le démon utilisera, si présent, la définition de /etc/localtime pour le fuseau horaire.

L’environnement peut être redéfini dans les définitions de crontab de l’utilisateur, mais cron ne prendra en charge que les tâches dans un seul fuseau horaire.

SPÉCIFIQUE À DEBIAN

Debian introduit certaines modifications à cron qui n’étaient pas disponibles dans la version originale. Les modifications les plus importantes introduites sont les suivantes :

Prise en charge de /etc/cron.{hourly,daily,weekly,monthly} via /etc/crontab,

Prise en charge de /etc/cron.d (répertoire pour les crontabs des paquets),

Prise en charge de PAM,

Prise en charge de SELinux,

Prise en charge d’auditlog,

DST et autres modifications/corrections liées à l’heure,

SGID [crontab]({filename}../../crontab)(1) au lieu de SUID root,

Emplacements et commandes spécifiques à Debian,

Configuration spécifique à Debian (/etc/default/cron),

De nombreuses autres petites fonctionnalités et corrections.

La prise en charge de /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly est fournie dans Debian grâce au paramètre par défaut du fichier /etc/crontab (voir l’exemple système dans crontab(5)). Le crontab système par défaut contient quatre tâches : exécution toutes les heures, tous les jours, toutes les semaines et tous les mois. Chacune de ces tâches exécutera run-parts(8) en lui fournissant chacun de ces répertoires en tant qu’argument. Ces tâches sont désactivées si anacron(8) est installé (sauf pour la tâche horaire) afin d’éviter les conflits entre les deux démons.

Comme décrit ci-dessus, les fichiers situés dans ces répertoires doivent passer certaines vérifications de cohérence, notamment les suivantes : être exécutables, être la propriété de root, ne pas être modifiables par le groupe ou les autres et, s’il s’agit de liens symboliques, pointer vers des fichiers appartenant à root. De plus, les noms de fichiers doivent respecter les exigences de nommage de run-parts(8) : ils doivent être entièrement composés de lettres, de chiffres et ne peuvent contenir que les signes spéciaux soulignement (« _ ») et tiret (« - »). Tout fichier qui ne respecte pas ces exigences ne sera pas exécuté par run-parts(8). Par exemple, tout fichier contenant des points sera ignoré. Ceci est fait pour empêcher cron d’exécuter les fichiers laissés par le système de gestion des paquets Debian dans /etc/cron.d/ en tant que fichiers de configuration (c’est-à-dire les fichiers se terminant par .dpkg-dist, .dpkg-orig, .dpkg-old et .dpkg-new).

Cette fonctionnalité peut être utilisée par les administrateurs système et les paquets pour inclure des tâches qui seront exécutées à des intervalles définis. Les fichiers créés par les paquets dans ces répertoires doivent être nommés d’après le paquet qui les fournit.

La prise en charge de /etc/cron.d est incluse dans le démon cron lui-même, qui gère cet emplacement comme le spool crontab système. Ce répertoire peut contenir n’importe quel fichier définissant des tâches en suivant le format utilisé dans /etc/crontab, c’est-à-dire que, contrairement au spool crontab de l’utilisateur, ces fichiers doivent fournir le nom d’utilisateur pour exécuter la tâche dans la définition de la tâche.

Les fichiers de ce répertoire doivent appartenir à l'utilisateur root, ne nécessitent pas d'être exécutables (il s'agit de fichiers de configuration, comme /etc/crontab) et doivent respecter la même convention de nommage que celle utilisée par run-parts(8) : ils ne doivent contenir que des lettres majuscules et minuscules, des chiffres, des tirets bas et des tirets. Cela signifie qu'ils ne peuvent pas contenir de points. Si l'option -l est spécifiée à cron (cette option peut être configurée via /etc/default/cron, voir ci-dessous), ils doivent alors respecter la spécification de l'espace de noms LSB, exactement comme dans l'option --lsbsysinit de run-parts(8).

L'objectif de cette fonctionnalité est de permettre aux paquets qui nécessitent un contrôle plus précis de leur planification que les répertoires /etc/cron.{hourly,daily,weekly,monthly} d'ajouter un fichier crontab à /etc/cron.d. Ces fichiers doivent être nommés d'après le paquet qui les fournit.

De plus, la configuration par défaut de cron est contrôlée par /etc/default/cron, qui est lu par le script init.d qui lance le démon cron. Ce fichier détermine si cron lira ou non les variables d'environnement du système et permet d'ajouter des options supplémentaires au programme cron avant son exécution, soit pour configurer sa journalisation, soit pour définir la façon dont il traitera les fichiers situés dans /etc/cron.d.

VOIR AUSSI

crontab(1), crontab(5), run-parts(8)

AUTEURS

Paul Vixie <_> A écrit cette page de manuel (1994).

Steve Greenland <_> A maintenu le paquet (1996-2005).

Javier Fernández-Sanguino Peña <_> A maintenu le paquet (2005-2014).

Christian Kastner <_> A maintenu le paquet (2010-2016).

Georges Khaznadar <_> A maintenu le paquet (2022-2024).

Copyright © 1994 Paul Vixie

À distribuer librement, sauf : ne retirez pas mon nom de la source ou de la documentation (ne vous attribuez pas le mérite de mon travail), indiquez vos modifications (ne me faites pas blâmer pour vos éventuels bogues), ne modifiez pas ou ne supprimez pas cet avis. Peut être vendu si le code source compilable est fourni à l'acheteur. Aucune garantie de quelque nature que ce soit, expresse ou implicite, n'est incluse avec ce logiciel ; utilisez-le à vos propres risques, la responsabilité de tout dommage (le cas échéant) causé à qui que ce soit résultant de l'utilisation de ce logiciel incombe entièrement à l'utilisateur.

Depuis 1994, de nombreuses modifications ont été apportées à cette page de manuel par les développeurs Debian qui ont maintenu cron(TM) ; la liste ci-dessus est une liste abrégée, plus d'informations peuvent être trouvées dans le fichier /usr/share/doc/cron/copyright.