-
Créer des tâches planifiées avec CRON
CRON est un démon qui va permettre d’exécuter sur des systèmes UNIX des tâches planifiées de manière récurrente ( ex : toutes les heures, tous les jours à 12h00...).
Tutoriel réalisé sur Xubuntu 14.04.1
Cron étant un démon, vous pouvez l'arrêter, le démarrer, le redémarrer avec la commande :
sudo service cron stop | start | restart
(cliquer sur l'image pour l'agrandir)
Ici, vous pouvez voir que le démon est bien démarré...
(cliquer sur l'image pour l'agrandir)
La liste des tâches à effectuer par cron est inscrite dans une table de configuration, table de configuration qui est éditée / vérifiée (syntaxe) par la commande crontab.
Vous avez la possibilité définir les droits d'utilisation sur crontab.
Les fichiers cron.allow et cron.deny situés dans /etc permettent de définir ces droits..
Si le fichier /etc/cron.allow existe, alors les utilisateurs doivent êtres présents dans ce fichier pour être autorisés à utiliser cette commande.
Si le fichier /etc/cron.allow n'existe pas mais que /etc/cron.deny existe, alors les utilisateurs ne doivent pas êtres présents dans le fichier /etc/cron.deny afin de pouvoir utiliser cette commande.
Si aucun des fichiers n'existent :
- La valeur par défaut sur Ubuntu/Debian est que tout le monde peut utiliser crontab.
- Sur d'autres systèmes Linux, seul le super-utilisateur sera autorisé à utiliser cette commande.
Pour ajouter un utilisateur dans un de ces 2 fichiers, utilisez les commandes :
echo "utilisateur_autorisé" >> /etc/cron.allow
echo "utilisateur_interdit" >> /etc/cron.deny
Il existe une table de configuration par utilisateur.
Selon votre OS, la table de configuration sera située :
Debian GNU/Linux et Ubuntu : /var/spool/cron/crontabs/utilisateur
CentOS/Red Hat/RHEL/Fedora/ArchLinux : /var/spool/cron/utilisateur
Mac OS X : /usr/lib/cron/tabs/utilisateur
(cliquer sur l'image pour l'agrandir)
La syntaxe de crontab est :
crontab -options
crontab -l : affiche le fichier crontab de l'utilisateur actuellement connecté.
crontab -e : édite le fichier crontab de l'utilisateur actuellement connecté.
crontab -u utilisateur -l : affiche le fichier crontab d'un utilisateur.
crontab -u utilisateur -e : édite le fichier crontab d'un utilisateur.
crontab -r : supprime toutes les tâches contenues dans le fichier crontab de l'utilisateur actuellement connecté.
!! Aucune confirmation ne sera demandée pour supprimer les tâches...
PS : Lors de la 1ère édition de crontab, il vous sera demandé de choisir l'éditeur que vous souhaitez utiliser.
Ce choix sera mémorisé pour les prochaines éditions, mais vous pouvez très bien le modifier par la suite avec la commande :
select-editor
(cliquer sur l'image pour l'agrandir)
Après une édition, un message de confirmation s'affichera si la syntaxe des lignes entrées est conforme.
(cliquer sur l'image pour l'agrandir)
La syntaxe d'une ligne dans le fichier crontab se décompose de cette manière :
PS : beaucoup vont définir le dimanche avec la valeur 0 alors que le manuel du crontab précise bien que le dimanche a pour valeur 0 et 7.
(cliquer sur l'image pour l'agrandir)
Ici, dans mon crontab, je demande à ce que ma corbeille soit vidée toutes les heures.
(cliquer sur l'image pour l'agrandir)
Vous avez également la possibilité d'utiliser des valeurs prédéfinies pour planifier vos tâches.
(cliquer sur l'image pour l'agrandir)
ici, j'effectue une mise à jour des définitions antivirus Bitdefender une fois par heure....
(cliquer sur l'image pour l'agrandir)
Si vous avez un serveur de mails ou bien un mail transfert agent, vous pouvez activer l'envoi de mail (MAILTO) afin que cron puisse envoyer les résultats des tâches programmées..
PS : pour désactiver les notifications, il suffira de mettre MAILTO=""
Dans ma 1ère tâche planifiée, je demande à rediriger le résultat de la tâche vers un fichier de log ( 2>&1 redirigeant la sortie d'erreur vers la sortie standard).
Pour en savoir un peu plus sur les redirections : les flux de redirection
Dans la seconde tâche, je demande a cron de récupérer toutes les heures la liste des mises à jour disponibles et de m'envoyer celle-ci par mail.
(cliquer sur l'image pour l'agrandir)
ici, le résultat de ma seconde tâche planifiée...
(cliquer sur l'image pour l'agrandir)
Vous pouvez consulter les logs de cron dans le fichier syslog.
(cliquer sur l'image pour l'agrandir)
Pour finir, voici quelques exemples de tâches planifiées :
Toutes les 15 minutes
*/15 * * * * /usr/bin/apt-get update
Tous les jours à 21H45
45 21 * * * /usr/bin/apt-get update
Tous les mardi à 23h35
35 23 * * 2 /usr/bin/apt-get update
A 10h45 tous les 15 du mois
45 10 15 * * /usr/bin/apt-get update
Tous les jours à 12h et 18h
00 12,18 * * * /usr/bin/apt-get update
Entre 15h et 20h du lundi au mercredi
00 15-20 * * 1-3 /usr/bin/apt-get update
Toutes les 15mn de 15h à 18h et du lundi au vendredi
*/15 15-18 * * 1-5 /usr/bin/apt-get update
Tous les jours pairs à 18h30
30 18 */2 * * /usr/bin/apt-get update
A 16h45 les lundi, mercredi et vendredi
45 16 * * 1,3,5 /usr/bin/apt-get update
Tous les jours à minuit
@daily /usr/bin/apt-get update
Conclusion :
Cron se révèle être l'outil incontournable pour exécuter des tâches planifiées...
Si au contraire, vous souhaitez planifier des tâches ponctuelles, vous pouvez passer par la commande at
N'hésitez pas à me faire part de vos remarques concernant ce tutoriel....
Tags : crontab, bin, cliquer, agrandir, image, tache, planification
-
Commentaires