Cron est un planificateur de tâches basé sur le temps, il est configuré pour exécuter des commandes à des moments ou à des intervalles donnés. Chaque utilisateur a une table cron qui définit quoi exécuter et à quel intervalle. crontab La commande est utilisée pour créer, modifier et afficher les tâches cron.
Fichiers et répertoires de configuration
– Cron est contrôlé par un ensemble de fichiers appelés crontabs.
– Il y a le fichier maître dans /etc/crontab , ainsi que les fichiers crontab pour les utilisateurs dans /var/spool/cron/ . Dans ce dernier répertoire, les fichiers portent le même nom que le nom d'utilisateur d'un utilisateur.
– Le fichier /etc/crontab exécute automatiquement des éléments dans plusieurs sous-répertoires à des périodes régulières. Les scripts sont placés dans divers répertoires - /etc/cron.* sont exécutés selon l'intervalle de temps indiqué ci-dessous. Tous les scripts de ces répertoires sont exécutés avec le privilège root.
Répertoire | Heure |
---|---|
/etc/cron.hourly | Première minute de chaque heure |
/etc/cron.daily | Entre 3h05 et 22h55 chaque jour |
/etc/cron.weekly | Entre 3h25 et 23h10 après 7 jours depuis la dernière exécution |
/etc/cron.monthly | Entre 3h45 et 23h30 après un mois depuis la dernière exécution |
– Tout ce que l'administrateur système doit faire est de placer un script shell ou un lien vers un exécutable dans l'un des répertoires et il sera automatiquement exécuté au moment opportun.
syntaxe crontab
La configuration d'une crontab au niveau de l'utilisateur est quelque peu différente. Les fichiers dans /var/spool/cron ne sont pas modifiés directement. Au lieu de cela, un programme appelé crontab est utilisé pour les manipuler. La syntaxe de la commande crontab est :
Usage: crontab [options] file crontab [options] crontab -n [hostname] Options: -u [user] define user -e edit user's crontab -l list user's crontab -r delete user's crontab -i prompt before deleting -n [host] set host in cluster to run users' crontabs -c get host in cluster to run users' crontabs -s selinux context -x [mask] enable debugging
Comment modifier une crontab
La meilleure façon de modifier un crontab est d'utiliser la commande crontab -e . Une autre façon de faire est :
1. su to the user whose cron you want to change 2. crontab -l > file [ copy the crontab to a file ]. 3. vi file [ make changes to the file as per your need ] 4. crontab file [ this makes the "file" as new crontab ]
Il n'est pas nécessaire de redémarrer le démon cron après cela.
Interprétation des champs d'heure et de date
Chaque commande cron comporte 5 champs d'heure et de date, suivis d'un nom d'utilisateur [facultatif], et s'il s'agit du fichier système crontab, il sera suivi d'une commande. Les commandes sont exécutées lorsque l'heure spécifiée par les champs heure/date correspond à l'heure actuelle.
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 0-31 month 0-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
Un champ peut être un astérisque (*), qui signifie toujours premier à dernier . Ainsi, lorsqu'il est utilisé dans le champ du mois, cela signifie tous les mois de 0 (janvier) à 12 (décembre).
Exemple de tâche Cron :
# Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | 0 1 * * * [user-name] [command to be executed]
Exemples de configuration de tâches cron
Ci-dessous quelques exemples d'utilisations de crontab pour comprendre comment planifier une tâche :
Exemple : exécuter une tâche cinq minutes après minuit, tous les jours :
5 0 * * * /home/oracle/scan_asm_devices.sh
Exemple : exécuter une tâche à 17h30 le 1er de chaque mois :
30 17 1 * * mail -s "It's 5:30pm"
Exemple : Exécution d'une tâche à 4h05 tous les lundis.
5 4 * * mon echo "run at 5 after 4 every monday"
Contrôle d'accès utilisateur
– Pour permettre aux utilisateurs d'accéder aux crontabs, les fichiers /etc/cron.allow et /etc/cron.deny peuvent être utilisés pour autoriser ou refuser l'accès respectivement. Mettez simplement un nom d'utilisateur dans l'un des 2 fichiers pour autoriser ou refuser l'accès à la crontab.
– Si le fichier /etc/cron.allow existe, le fichier /etc/cron.deny ne sera pas utilisé.
– Dans l'installation par défaut, seul un fichier vide /etc/cron.deny existera.
– Si aucun des fichiers n'existe, seul l'utilisateur root aura accès à la planification d'une tâche via cron.