Comment utiliser Cron et Crontab sur Linux pour planifier des tâches sur des serveurs

Utiliser Cron et Crontab sur Linux pour planifier des tâches sur les serveurs

Avez-vous déjà essayé de planifier une tâche répétitive sur votre serveur Linux et ne savez pas comment le faire ? Les outils cron et crontab qui sont disponibles par défaut dans les systèmes Linux vous permettront d'effectuer une certaine tâche (ou plusieurs) dans un certain temps, c'est-à-dire que nous pourrons programmer avec une précision de minutes ce que nous voulons exécuter et quand on le veut. Cours. Aujourd'hui, nous allons expliquer en détail le fonctionnement de Cron et Crontab, afin que vous puissiez gérer correctement vos serveurs.

Ces deux éléments sont très importants lorsqu'il s'agit de planifier des tâches périodiques qui sont exécutées sans que nous ayons à connaître leur statut. Cela nous permettra de ne pas nous soucier d'exécuter quelque chose à un certain moment, le laissant complètement automatique dans le système d'exploitation. Nous avons déjà mentionné Cron et Crontab. Tout d'abord, nous allons voir quelles différences existent entre les deux éléments. Plus tard, nous apprendrons à ajouter des tâches, et enfin, nous approfondirons la gestion des tâches Cron.

Différences entre Cron et Crontab

Bien qu'il puisse sembler que nous parlons de la même chose, ce n'est pas le cas, et deux éléments pourraient être considérés comme dépendants l'un de l'autre. Pour être plus clair, ils sont chargés de rendre possible la planification des tâches sur les systèmes Linux. Actuellement, tout système d'exploitation basé sur Linux dispose des deux outils, afin de programmer les différentes tâches de manière répétitive sans que nous ayons à nous en occuper.

Qu'est-ce que Cron

Cron est un démon (processus d'arrière-plan) qui s'exécute à partir du moment où le système d'exploitation démarre. Cron sera chargé de vérifier s'il y a une tâche (travail) à exécuter, en fonction du temps configuré dans le système d'exploitation lui-même. Il est très important que l'heure soit correctement configurée, ainsi que le fuseau horaire, sinon, les exécutions effectuées par Cron ne correspondront pas à nos paramètres.

Pour vous assurer que notre système d'exploitation est configuré correctement, il est très important que vous obteniez l'heure automatiquement à partir des serveurs NTP (Network Time Protocol) existants. Pour vérifier que nous avons la bonne heure dans notre système d'exploitation, dans quel fuseau horaire nous sommes et si l'horloge système est correctement synchronisée avec les serveurs NTP, nous pouvons exécuter la commande suivante :

timedatectlNous devrions voir quelque chose comme ceci :

Comme vous pouvez le voir, toutes les heures correspondent parfaitement et l'heure est correcte, c'est très important, sinon, les « Crons » seront exécutés aux heures où ils ne devraient pas être exécutés. Dans le cas où nous n'avons pas correctement configuré le fuseau horaire, nous pouvons le configurer correctement avec la commande suivante :

timedatectl set-timezone Europe/MadridAvec l'installation du système d'exploitation Linux, les serveurs NTP que nous voulons sont automatiquement configurés, en cas de panne ou que nous voulons changer ces serveurs NTP, nous pouvons le faire en installant le service correspondant et en le configurant dans /etc/ntp .conf.

Selon la distribution, Cron commence à utiliser le /etc/rc.d/ or / Etc / init.d dossiers et chaque minute, il vérifie le /etc/crontab or  / var / bobine / cron fichiers pour les exécutions possibles que nous pourrions avoir. programmé.

Qu'est-ce que Crontab

Crontab est un fichier texte, c'est un fichier avec un contenu spécial et spécialement conçu pour être lu correctement par Cron et procéder à l'exécution que nous avons programmée. Crontab a une liste avec tous les scripts à exécuter, généralement chaque utilisateur du système a son propre fichier Crontab, de cette façon, chaque utilisateur pourrait planifier ses propres tâches répétitives de manière indépendante, sans que nous ayons toujours à aller au utilisateur administrateur. De cette façon, tout utilisateur (y compris les administrateurs) peut programmer des tâches répétitives pour effectuer différentes exécutions.

Pour générer son propre fichier, chaque utilisateur doit utiliser la commande « crontab » (oui, c'est le même nom).

Ajouter des tâches à Crontab

Partant du fait que nous pouvons exécuter des tâches, tout d'abord, nous allons configurer un script très simple que nous appellerons query.sh, nous mettrons ce script sur notre « Bureau » ou dans « Documents », nous serons capable d'exécuter directement l'éditeur de texte « nano » à l'endroit où l'on veut le mettre :

nano consulta.shLe contenu du script serait le suivant :

#!/bin/bashsudo ls -l / > archivoResultado.txt

Une fois que nous avons programmé le script, qui est essentiellement un programme qui répertorie les fichiers et répertoires du répertoire courant, et l'exporte dans un fichier texte, nous devons lui donner les autorisations d'exécution pour pouvoir l'exécuter correctement par Cron, sinon ne pas avoir d'autorisations d'exécution :

chmod ugo+x consulta.shCet aspect est très important, car sinon la commande ne sera jamais exécutée.

Le moment est venu d'éditer le fichier qui contient les tâches. Pour cela, nous allons utiliser la commande crontab -e. On retrouve la structure suivante :

linux-cron-crontab-ajouter-tâches-périodiques

5 astérisques et la commande à exécuter. Chacun des 5 astérisques signifie :

  • m : minute
  • h : heure
  • soleil : jour de la semaine
  • lun : mois
  • dow : jour du mois

Les valeurs que chacune de ces variables peut adopter sont dans l'image. Par exemple, dans le cas de ce dernier, l'utilisation du nom des jours écrit en anglais est autorisée. Bien qu'il n'apparaisse pas dans l'image précédente, il faut indiquer entre la commande et le dernier astérisque (le jour) le propriétaire du fichier.

Pour être clair, nous allons utiliser quelques exemples :

Si nous voulons exécuter la requête script.sh tous les jours à 7 heures de l'après-midi, nous devrons indiquer une ligne dans la crontab avec ce qui suit :

00 19 * * * usuario /ubicacion/del/script/consulta.shSi nous voulons courir tous les dimanches à 7 heures de l'après-midi :

00 19 * * 0 usuario /ubicacion/del/script/consulta.shExécutez le script tous les 4 février à 7h :

00 19 4 2 * usuario /ubicacion/del/script/consulta.shIl faut dire que sous Linux il y a des chaînes de texte réservées pour exécuter des processus pendant certaines périodes dans la Crontab elle-même, cela sera très utile :

  • @reboot : Exécuter une fois et dès que l'ordinateur démarre.
  • @yearly : ne fonctionne qu'une fois par an : 0 0 1 1 *
  • @monthly : exécuté une fois par mois et le premier jour : 0 0 1 * *
  • @weekly : chaque semaine, la première minute de la première heure de la semaine : 0 0 * * 0.
  • @daily : tous les jours à minuit : 12 0 * * *
  • @minuit : Cela a le même effet que ci-dessus.
  • @hourly : toutes les heures pendant votre première minute : 0 * * * *

Bien que nous vous ayons dit quel serait le format, lors de l'utilisation de crontab -e, ces termes peuvent être utilisés pour définir la période.

Gestion des emplois Cron

Le fonctionnement de Crontab est très simple, comme nous l'avons vu, nous allons maintenant vous apprendre quelques commandes de base pour contrôler le fonctionnement de Crontab lui-même dans les systèmes d'exploitation Linux.

Pour remplacer le fichier existant par un autre défini par l'utilisateur, la commande suivante doit être utilisée :

crontab archivoPour éditer le fichier actuellement existant, la commande que nous avons déjà vue tout au long de cet article est utilisée :

crontab -eRépertoriez toutes les tâches existantes dans la crontab de l'utilisateur :

crontab -lSupprimez la crontab configurée :

crontab -dDéfinissez le répertoire dans lequel le fichier crontab sera stocké. Pour effectuer cette opération, vous devez disposer des autorisations d'exécution sur ledit répertoire :

crontab -c dirInstruction pour gérer le crontab d'autres utilisateurs existants dans le système :

crontab -u usuarioComme vous pouvez le voir, planifier l'exécution des tâches n'est pas compliqué et peut se faire rapidement si tout ce qui est mentionné dans ce tutoriel est clair.