CRON(8) Administration Système CRON(8)

cron – Démon permettant de lancer des commandes différées

crond [-c | -h | -i | -n | -p | -P | -s | -m<courrielcommande>]
crond -x [ext,sch,proc,pars,load,misc,test,bit]
crond -V

cron est démarré à partir de /etc/rc.d/init.d ou /etc/init.d quand les scripts sysvinit classiques sont utilisés. Si systemd est utilisé, alors le fichier d’unité est installé dans /lib/systemd/system/crond.service et le démon est démarré par la commande systemctl start crond.service. Elle rend la main immédiatement et par conséquent, il n’est pas nécessaire de la démarrer avec le paramètre « & ».

cron recherche dans /var/spool/cron des fichiers crontab qui sont nommés d’après l’accréditation dans /etc/passwd. Les fichiers crontab trouvés sont chargés en mémoire. cron recherche aussi dans /etc/anacrontab et dans n’importe quel fichier dans le répertoire /etc/cron.d qui ont un format différent (consulter crontab(5)). cron examine tous les fichiers crontab stockés et contrôle chaque tâche pour savoir si elle doit être exécutée dans la minute présente. Lors de l’exécution des commandes, n’importe quelle sortie est transmise au propriétaire du fichier crontab (ou à l’utilisateur indiqué dans la variable d’environnement MAILTO dans le fichier crontab, si elle existe). N’importe quelle sortie pour une tâche peut être aussi envoyée à syslog en utilisant l’option -s.

Il existe deux manières de vérifier les modifications dans les tables de planification. La première est de vérifier l’heure de dernière modification (modtime) d’un fichier. La seconde méthode est d’utiliser la prise en charge d’inotify. L’utilisation est journalisée dans le fichier /var/log/cron après que le démon soit démarré. La prise en charge d’inotify recherche les modifications dans toutes les tables et accède au disque dur seulement si une modification a été détectée.

Lors de l’utilisation de l’option modtime, cron interroge les modtime des tables de planification toutes les minutes pour rechercher toute modification et recharge les tables ayant changé. Il n’est nul besoin de redémarrer cron après qu’une table ait été modifiée. L’option modtime est aussi utilisée quand inotify ne peut pas être initialisé.

cron recherche dans ces fichiers et répertoires :

/etc/crontab
Table cron du système. Désormais le fichier est vide par défaut. À l’origine il était habituellement utilisé pour exécuter des tâches de manière journalière, hebdomadaire ou mensuelle. Par défaut, ces tâches sont exécutées à travers anacron qui lit le fichier de configuration /etc/anacrontab. Consulter anacrontab(5) pour davantage de détails.
/etc/cron.d
Répertoire contenant les tâches cron pour les différents utilisateurs.
/var/spool/cron
Répertoire contenant les tables cron des utilisateurs créées à l’aide de la commande crontab.

Remarquez que la commande crontab(1) met à jour l’heure de modification du répertoire de la file d’attente à chaque modification d’une table cron.

Les modifications d’heure locale de moins de trois heures, telles que celles pour l’heure d’été sont gérées de manière spéciale. Cela s’applique seulement pour les tâches qui se déroulent à un moment spécifique et pour celles qui se déroulent avec une granularité supérieure à une heure. Les tâches qui s’exécutent plus fréquemment sont planifiées normalement.

Si l’heure avait été ajustée à une heure plus tard, ces tâches, qui auraient été exécutées dans cet intervalle sauté, sont exécutées immédiatement. Inversement, si l’heure avait été ajustée à une heure plus tôt, l’exécution des tâches deux fois est évitée.

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

Il est possible d’utiliser des fuseaux horaires différents pour les tables cron. Consulter crontab(5) pour plus d’informations.

cron gère le contrôle d’accès avec PAM si celui-ci est installé dans le système. Pour plus d’informations, consultez pam(8). Un fichier de configuration de PAM pour crond est installé dans /etc/pam.d/crond. Le démon charge l’environnement PAM à partir du module pam_env. Cela peut être contourné par des réglages spécifiques dans un fichier de table cron.

Afficher un message d’aide et quitter.
Désactiver la prise en charge d’inotify.
Cette option permet d’indiquer une commande d’interpréteur pour envoyer la sortie courriel de cron au lieu de sendmail(8). Cette commande doit accepter un message de courriel selon le format complet (avec en-têtes) sur l’entrée standard et l’envoyer comme message de courriel aux destinataires indiqués dans l’en-tête de courriel. L’indication de la chaîne off (c’est-à-dire crond -m off) désactive l’envoi du courriel.
Indiquer au démon de s’exécuter en arrière-plan. Cela peut être utile si son démarrage ne s’effectue pas avec init. Cette option demande une modification du réglage de PAM. /etc/pam.d/crond ne doit pas activer le module pam_loginuid.so.
Autoriser cron à accepter n’importe quelle table cron d’utilisateur.
Ne pas définir PATH. Celle-ci sera héritée de l’environnement.
Cette option active la prise en charge du regroupement, comme expliqué ci-dessous.
Cette option dirigera cron pour envoyer la sortie de la tâche au journal du système en utilisant syslog(3). Cela est utile si le système n’a pas sendmail(8) installé ou si le courrier n’est pas autorisé.
Cette option permet de régler les indicateurs de débogage.
Afficher le numéro de version et quitter.

Quand le signal SIGHUP est reçu, le démon cron ferme et réouvre son fichier de journal. Cela est utile dans les scripts qui font tourner et limitent l’âge des fichiers de journaux. Évidemment, cela ne concerne pas le cas où cron est construit avec l’utilisation de syslog(3).

Dans cette version de cron, il est possible d'utiliser un fichier /var/spool/cron partagé dans un montage réseau parmi un regroupement d’hôtes et d'indiquer qu’un seul des hôtes exécutera les tâches de la table cron dans ce répertoire à tout moment. Cela est réalisé en démarrant cron avec l’option -c et en ayant le fichier /var/spool/cron/.cron.hostname contenant juste une ligne qui décrit le nom d’hôte dans le regroupement de n’importe quel hôte habilité à exécuter les tâches. En l’absence de ce fichier ou si le nom d’hôte ne correspond pas à celui renvoyé par gethostname(2), alors tous les fichiers de table cron dans ce répertoire seront ignorés. Cela n’a aucun effet sur les tâches cron précisées dans le fichier /etc/crontab ou dans le répertoire /etc/cron.d. Ces fichiers sont toujours exécutés et considérés spécifiques à un hôte.

Plutôt que d’éditer /var/spool/cron/.cron.hostname directement, utilisez l’option -n de crontab(1) pour indiquer l’hôte.

Il faut veiller à ce que tous les hôtes dans un regroupement et à ce que le serveur de fichiers permettant le montage du répertoire partagé de tables cron aient leurs horloges synchronisées rigoureusement, par exemple en utilisant ntpd(8), sinon le résultat sera imprévisible.

L’utilisation du partage de regroupement désactive automatiquement inotify, parce que celui-ci ne peut se fier au système de fichiers partagé monté sur un réseau.

Tous les fichiers crontab doivent être des fichiers normaux ou des liens symboliques vers ceux-ci, Ils ne doivent pas être exécutables ou accessibles en écriture. Outrepasser ces exigences est possible en utilisant l’option -p sur la ligne de commande de crond. Si la prise en charge d’inotify est utilisée, les changements dans les tables cron avec liens symboliques ne sont pas automatiquement renseignés par le démon cron. Celui-ci doit avoir reçu un signal SIGHUP pour recharger les tables cron. C’est une limitation de l’API de inotify.

La sortie de syslog sera utilisée au lieu du courriel si sendmail n’est pas installé.

crontab(1), crontab(5), inotify(7), pam(8)

Paul Vixie
Marcela Mašláňová
Colin Dean
Tomáš Mráz

La traduction française de cette page de manuel a été créée par Steve Petruzzello <dlist@bluewin.ch>, Nicolas François <nicolas.francois@centraliens.net>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

26 septembre 2013 cronie