Cron est un service de planification de tâches basé sur le temps dans les systèmes d'exploitation de type Unix. Les utilisateurs peuvent programmer des tâches (commandes ou scripts) à exécuter à des heures, dates ou intervalles spécifiques. Cette fonctionnalité est particulièrement utile pour automatiser les tâches de maintenance du système, exécuter des scripts ou même envoyer des courriers électroniques à des intervalles précis.
L'anatomie d'un emploi Cron
Il est essentiel de comprendre la structure d'une tâche Cron. Un travail Cron est une simple ligne dans un fichier crontab (table Cron) représentant une commande programmée pour être exécutée à des intervalles spécifiques. Une entrée crontab comporte six champs :
- Minutes (0 - 59)
- Heures (0 - 23)
- Jour du mois (1 - 31)
- Mois (1 - 12)
- Jour de la semaine (0 - 7, où 0 et 7 représentent tous deux le dimanche)
- Commande à exécuter
Mise en place d'une tâche Cron
Pour programmer un travail Cron, vous devez éditer le fichier crontab. Vous pouvez le faire à l'aide de la commande crontab -e
qui ouvre le fichier crontab dans un éditeur de texte. Voici un petit tour d'horizon :
- Ouverture de la Crontab : Exécuter le
crontab -e
(commande). Cette commande ouvre le fichier crontab dans votre éditeur par défaut. - Ajout d'une tâche Cron : Sur une nouvelle ligne, indiquez les paramètres de programmation (minutes, heures, etc.) suivis de la commande.
- Sauvegarde et sortie : Enregistrez les modifications et quittez l'éditeur.
Exemples de tâches Cron courantes
La polyvalence de Cron peut être démontrée par son vaste éventail de cas d'utilisation. En voici quelques exemples :
- Sauvegarde quotidienne d'un répertoire : Vous pouvez programmer une tâche Cron pour sauvegarder quotidiennement un répertoire particulier. Supposons que le répertoire soit /home/nom d'utilisateur/documents, et que vous souhaitiez effectuer la sauvegarde à 2 heures du matin tous les jours.
0 2 * * * tar -zcf /var/backups/home.tgz /home/username/documents
- Exécution d'un script toutes les minutes : Si vous disposez d'un script (par exemple, script.sh situé dans /home/username/script.sh), vous pouvez programmer son exécution toutes les minutes.
* * * * * /home/username/script.sh
- Envoi d'un courriel tous les lundis : Supposons que vous ayez un fichier mail.txt et que vous souhaitiez envoyer son contenu par courrier électronique tous les lundis à 17 heures. Vous pouvez utiliser la commande mail en conjonction avec Cron.
0 17 * * MON cat /home/username/mail.txt | mail -s "Weekly Update" [email protected]
Conseils et astuces avancés pour Cron
Bien que Cron soit puissant et flexible, il existe quelques trucs et astuces qui peuvent vous aider à optimiser son utilisation :
- Définition du PATH : Lorsque vous planifiez des tâches, vous pouvez définir la variable d'environnement PATH en tête du fichier crontab pour vous assurer que toutes les commandes sont trouvées sans spécifier de chemins absolus.
- Redirection de la sortie : Par défaut, Cron envoie un courriel au compte utilisateur qui exécute le cronjob. Si cela n'est pas nécessaire, vous pouvez rediriger la sortie vers /dev/null.
- Enregistrement des tâches Cron : Pour garder une trace d'un travail cron, vous pouvez rediriger la sortie vers un fichier journal.
Limites et alternatives à Cron
Malgré ses avantages, Cron n'est pas sans limites. Il ne dispose pas de fonctionnalités telles que les dépendances et l'enchaînement des tâches, ni de rapports détaillés, que l'on trouve dans des planificateurs de tâches plus avancés.
Il existe plusieurs alternatives puissantes à Cron, notamment :
- Anacron : Idéal pour les systèmes qui ne fonctionnent pas en continu.
- Fcron : Combine les fonctionnalités de Cron et d'Anacron, avec des caractéristiques améliorées.
- Systemd Timers : Un remplacement moderne de Cron dans les distributions Linux basées sur Systemd.
Poursuite de l'apprentissage
- Guide Cron sur Ubuntu Documentation
- Tutoriel Cron sur TecMint
- Aperçu de Cron sur DigitalOcean Tutorials
- Page de manuel Crontab
Grâce à la puissance de Cron, vous pouvez automatiser presque toutes les tâches que vous exécuteriez autrement manuellement. Sa structure simple et ses options de planification flexibles en font un élément essentiel de la boîte à outils de tout administrateur de système de type Unix.