Parfois, vous pouvez avoir des tâches qui doivent être effectuées régulièrement ou à certains intervalles prédéfinis. Ces tâches incluent la sauvegarde des bases de données, la mise à jour du système, l'exécution de redémarrages périodiques, etc. De telles tâches sous Linux sont appelées tâches cron (Crontab). Les tâches Cron sont utilisées pour l'automatisation des tâches qui sont utiles et aident à simplifier l'exécution de tâches répétitives et parfois banales. Cron est un démon qui vous permet de planifier ces tâches qui sont ensuite exécutées à des intervalles spécifiés. Dans ce didacticiel, vous apprendrez à planifier des tâches à l'aide de tâches cron.
Le fichier Crontab
Un fichier crontab, également appelé table cron , est un simple fichier texte qui contient des règles ou des commandes qui spécifient l'intervalle de temps d'exécution d'une tâche. Il existe deux catégories de fichiers crontab :
1) Fichier crontab à l'échelle du système
Ceux-ci sont généralement utilisés par les services Linux et les applications critiques nécessitant des privilèges root. Le fichier système crontab se trouve dans /etc/crontab et ne peut être consulté et modifié que par l'utilisateur root. Il est généralement utilisé pour la configuration des démons à l'échelle du système. Le fichier crontab ressemble à ceci :
2) Fichiers crontab créés par l'utilisateur
Les utilisateurs Linux peuvent également créer leurs propres tâches cron à l'aide de la commande crontab. Les tâches cron créées s'exécuteront en tant qu'utilisateur qui les a créées.
Toutes les tâches cron sont stockées dans /var/spool/cron (pour les distributions RHEL et CentOS) et /var/spool/cron/crontabs (pour les distributions Debian et Ubuntu), les tâches cron sont répertoriées en utilisant le nom d'utilisateur de l'utilisateur qui a créé le tâche cron
Le démon cron s'exécute silencieusement en arrière-plan en vérifiant /etc/crontab fichier et /var/spool/cron et /etc/cron.d*/ répertoires
La crontab La commande est utilisée pour éditer les fichiers cron. Examinons l'anatomie d'un fichier crontab.
L'anatomie d'un fichier crontab
Avant d'aller plus loin, il est important que nous explorions d'abord à quoi ressemble un fichier crontab. La syntaxe de base d'un fichier crontab comprend 5 colonnes représentées par des astérisques suivis de la commande à exécuter.
* * * * * commande
Ce format peut également être représenté comme indiqué ci-dessous :
commande m h d moy dow
OU
m h d moy dow /chemin/vers/script
Expliquons chaque entrée
- m :Ceci représente les minutes. Il est spécifié de 0 à 59
- h :Cela dénotait l'heure spécifiée de 0 à 23
- d : Cela représente le jour du mois. Spécifié entre 1 et 31`
- moi :C'est le mois de l'année. Il est spécifié entre 1 et 12
- doy : C'est le jour de la semaine. Il est spécifié entre 0 et 6 où 0 =dimanche
- Commande :Il s'agit de la commande à exécuter, par exemple la commande de sauvegarde, le redémarrage et la copie
Gestion des tâches cron
Après avoir examiné l'architecture d'un fichier crontab, voyons comment vous pouvez créer, modifier et supprimer des tâches cron
Créer des tâches cron
Pour créer ou modifier une tâche cron en tant qu'utilisateur root, exécutez la commande
# crontab -e
Pour créer une tâche cron ou planifier une tâche en tant qu'un autre utilisateur, utilisez la syntaxe
# crontab -u nom d'utilisateur -e
Par exemple, pour exécuter une tâche cron en tant qu'utilisateur Pradeep, lancez la commande :
# crontab -u Pradeep -e
S'il n'y a pas de fichier crontab préexistant, vous obtiendrez un document texte vierge. Si un fichier crontab existait, l'option -e permet d'éditer le fichier,
Liste des fichiers crontab
Pour afficher les tâches cron qui ont été créées, passez simplement l'option -l comme indiqué
# crontab -l
Suppression d'un fichier crontab
Pour supprimer un fichier cron, exécutez simplement crontab -e et supprimez ou la ligne de la tâche cron que vous souhaitez et enregistrez le fichier.
Pour supprimer toutes les tâches cron, exécutez la commande :
# crontab -r
Cela dit, examinons différentes façons de planifier des tâches
Exemples de Crontab dans les tâches de planification.
Toutes les tâches cron étant avec un en-tête shebang comme indiqué
#!/bin/bash
Cela indique le shell que vous utilisez, qui, dans ce cas, est bash shell.
Ensuite, spécifiez l'intervalle auquel vous souhaitez planifier les tâches à l'aide des entrées de tâche cron que nous avons spécifiées précédemment.
Pour redémarrer un système quotidiennement à 12h30, utilisez la syntaxe :
30 12 * * * /sbin/reboot
Pour planifier le redémarrage à 4h00, utilisez la syntaxe :
0 4 * * * /sbin/reboot
REMARQUE : L'astérisque * est utilisé pour faire correspondre tous les enregistrements
Pour exécuter un script deux fois par jour, par exemple, 4h00 et 16h00, utilisez la syntaxe.
0 4,16 * * * /chemin/vers/script
Pour planifier l'exécution d'une tâche Cron tous les vendredis à 17h00, utilisez la syntaxe :
0 17 * * Ven /chemin/vers/script
OU
0 17 * * * 5 /chemin/vers/script
Si vous souhaitez exécuter votre tâche cron toutes les 30 minutes, utilisez :
*/30 * * * * /chemin/vers/script
Pour planifier l'exécution de cron toutes les 5 heures, exécutez
* */5 * * * /chemin/vers/script
Pour exécuter un script certains jours, par exemple, mercredi et vendredi à 18h00, exécutez :
0 18 * * mer,ven /chemin/vers/script
Pour programmer plusieurs tâches pour utiliser une seule tâche cron, séparez les tâches à l'aide d'un point-virgule, par exemple :
* * * * * /chemin/vers/script1; /chemin/vers/script2
Utilisation de chaînes spéciales pour gagner du temps lors de l'écriture de tâches cron
Certaines des tâches cron peuvent facilement être configurées à l'aide de chaînes spéciales qui correspondent à certains intervalles de temps. Par exemple,
1) @horodatage horaire correspond à 0 * * * *
Il exécutera une tâche dans la première minute de chaque heure.
@horaire /chemin/vers/script
2) L'horodatage @daily équivaut à 0 0 * * *
Il exécute une tâche dans la première minute de chaque jour (minuit). Il est pratique lors de l'exécution de tâches quotidiennes.
@daily /chemin/vers/script
3) L'horodatage @hebdomadaire est l'équivalent de 0 0 1 * mois
Il exécute une tâche cron dans la première minute de chaque semaine, où une semaine commence le lundi.
@weekly /chemin/vers/script
3) @monthly est similaire à l'entrée 0 0 1 * *
Il exécute une tâche dans la première minute du premier jour du mois.
@mensuel /chemin/vers/script
4) @annuel correspond à 0 0 1 1 *
Il exécute une tâche dans la première minute de chaque année et est utile pour envoyer les vœux du Nouvel An 🙂
@mensuel /chemin/vers/script
Restrictions Crontab
En tant qu'utilisateur Linux, vous pouvez contrôler qui a le droit d'utiliser la commande crontab. Ceci est possible en utilisant le /etc/cron.deny et /etc/cron.allow dossier. Par défaut, seul le fichier /etc/cron.deny existe et ne contient aucune entrée. Pour empêcher un utilisateur d'utiliser l'utilitaire crontab, ajoutez simplement le nom d'utilisateur d'un utilisateur au fichier. Lorsqu'un utilisateur est ajouté à ce fichier et que l'utilisateur essaie d'exécuter la commande crontab, il rencontrera l'erreur ci-dessous.
Pour permettre à l'utilisateur de continuer à utiliser l'utilitaire crontab, supprimez simplement le nom d'utilisateur du fichier /etc/cron.deny.
Si le fichier /etc/cron.allow est présent, seuls les utilisateurs répertoriés dans le fichier peuvent accéder et utiliser l'utilitaire crontab.
Si aucun fichier n'existe, seul l'utilisateur root aura les privilèges d'utiliser la commande crontab.
Sauvegarde des entrées crontab
Il est toujours conseillé de sauvegarder vos entrées crontab. Pour cela, utilisez la syntaxe
# crontab -l> /chemin/vers/fichier.txt
Par exemple,
# crontab -l > /home/james/backup.txt
Vérification des journaux cron
Les journaux Cron sont stockés dans le fichier /var/log/cron. Pour afficher les journaux cron, exécutez la commande :
# cat /var/log/cron
Pour afficher les journaux en direct, utilisez la commande tail comme indiqué :
# tail -f /var/log/cron
Conclusion
Dans ce guide, vous avez appris à créer des tâches cron pour automatiser les tâches répétitives, à sauvegarder et à afficher les journaux cron. Nous espérons que cet article a fourni des informations utiles concernant les tâches cron. N'hésitez pas à partager vos retours et commentaires.