GNU/Linux >> Tutoriels Linux >  >> Linux

Comment automatiser des tâches sous Linux à l'aide de Crontab

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.


Linux
  1. Conseils Linux pour utiliser cron pour planifier des tâches

  2. Comment utiliser cron sous Linux

  3. Comment j'utilise cron sous Linux

  4. Automatiser les tâches système à l'aide de Crontab sur Ubuntu

  5. Comment planifier des tâches à l'aide de sous Linux

Qu'est-ce que Crontab et comment automatiser des tâches sous Linux avec Crontab

Comment gérer facilement et en toute sécurité les tâches Cron sous Linux

Comment automatiser des tâches avec des tâches cron sous Linux

Comment planifier des tâches sur Ubuntu 20.04 à l'aide de Crontab

Comment automatiser les tâches quotidiennes sur Linux en utilisant (at)

Comment planifier des tâches avec Cron sous Linux