Guide du débutant sur l'utilisation de Cron pour planifier des tâches dans un système Linux

Cron est un puissant planificateur qui vous permet de planifier des scripts ou des commandes et de les exécuter régulièrement. C'est un battement de cœur qui maintient divers programmes et scripts personnalisés chronométrés. Vous pouvez planifier l'exécution de scripts dans le fichier crontab. Bien que ce fichier puisse être horrible lors de la première, il est facile à comprendre avec peu de pratique.

Dans certaines distributions Linux, telles que Arch Linux, cron n'est pas installé par défaut car il utilise systemd comme alternative à cron. En outre, il existe de nombreuses applications mises en œuvre par Kron, chacune ayant sa propre méthode d’édition / planification des fonctions Cron. Dans ce didacticiel, nous allons nous concentrer sur la création, qui est le paramètre par défaut dans la plupart des distributions Linux, telles que Ubuntu.

Guide du débutant sur l'utilisation de Cron pour planifier des tâches sous Linux - Linux

Afficher les entrées pour Chrome

Afficher crontab Vous permet d'afficher les tâches planifiées qui seront exécutées sous votre compte.

crontab -l
Guide du débutant sur l'utilisation de Cron pour planifier des tâches sous Linux - Linux

Vous pouvez également afficher les tâches planifiées pour un compte de routine à l'aide de sudo.

sudo crontab -l

Editer les entrées Cron

Si vous n'avez jamais configuré de tâche cron, l'affichage de ce fichier affichera un fichier vide ou un fichier avec des commentaires. Pour ajouter une entrée, vous devez ouvrir le fichier crontab en utilisant l’option -e.

crontab -e

Vous allez suivre les entrées crontab Toujours la même structure, ce qui vous permet d'examiner les entrées sur n'importe quel périphérique et de les créer par programme.

La définition de la définition d’entrée crontab est:

m h d mon dow command

m = Minutes entre 0 et 59

h = Heure entre 0 et 23

d = Jour du mois entre 1 et 31

mon = Mois entre 1 et 12

fenêtre = Jour de la semaine entre 0 et 6. Zéro le dimanche.

Command = Commande à exécuter.

Par exemple, vous devez exécuter une commande régulièrement pour vérifier si le serveur mysql fonctionne bien ou non. Pour que la commande fonctionne toutes les heures, utilisez la syntaxe suivante:

0 * * * * mysqlcheck --all-databases --check-only-changed --silent

Cela signifie qu'il fonctionnera sur le point toutes les heures. Si vous souhaitez simplement l'exécuter tous les jours à 1.42 AM, ce sera:

42 1 * * * mysqlcheck --all-databases --check-only-changed --silent

En outre, des virgules peuvent être utilisées pour plusieurs éléments (tels que 1, 3, 5) et des traits d'union peuvent être utilisés pour des plages. L'utilisation spéciale d'un astérisque à la place d'un élément dans l'expression fait référence à l'élément à exécuter pour toutes les valeurs de champ. (Un astérisque apparaît dans le champ Clock-to-Play pour chaque heure de 0-23.) Le signe # dans la ligne indique un commentaire (ce qui signifie que la ligne de code ne sera pas exécutée).

Enfin, la ligne suivante indiquera une valeur de pas. Par exemple, toutes les cinq minutes seront entrées sous la forme * / 5 (à partir du moment où vous enregistrez crontab et créez un travail cron). Si vous utilisez uniquement "5", l'entrée ne sera activée que dans le délai de cinq minutes.

Par exemple ceci:

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent

34: Exécuter les minutes entre 0 et 59

3: Horloge, entre 0 et 23

*: Les deux étoiles du centre chaque jour (de 1 à 31) et chaque mois (de 1 à 12)

0: Le zéro final se réfère au dimanche

Cette tâche sera exécutée à 3: 34 tous les mois, toutes les semaines le dimanche.

Codes courts

Vous permet de crontab Utiliser de courtes icônes pour faciliter la lecture de vos entrées cron.

@reboot - Exécuter une fois, au démarrage

@annuel - Exécuter une fois par an, «0 0 1 1 *».

@annuellement - Comme chaque année

@mensuel - Exécuté une fois par mois, "0 0 1 * *"

@hebdomadaire - Exécuté une fois par semaine, "0 0 * * 0"

@du quotidien - Exécuter une fois par jour, "0 0 * * *"

@minuit - Même jour

@hourly - Exécutez une fois toutes les heures, "0 * * * *"

Par exemple:

@hourly mysqlcheck --all-databases --check-only-changed --silent

Editer les entrées cron en tant qu'autre utilisateur

Il est parfois nécessaire d’ajouter des cartes crontab. Par exemple, pour renouveler automatiquement le certificat Let is Encrypt SSL, vous devez exécuter le texte de renouvellement avec les privilèges de routage. Pour éditer les cartes crontab, ajoutez simplement sudo à la commande:

sudo crontab -e

De même, vous pouvez planifier un travail cron en tant qu'autre utilisateur à l'aide de la balise -u:

sudo crontab -u username -e

Par exemple, pour exécuter un travail cron en tant qu'utilisateur "www-data", utilisez la commande suivante:

sudo crontab -u www-data -e

Bilan de l'activité de Kron

Bien que vous soyez maintenant prêt à exécuter des commandes ou des scripts spécifiques, vous pouvez vous assurer qu'ils sont en cours d'exécution. Le cron intégré est qu'une fois la commande exécutée, un courrier électronique sera envoyé au propriétaire du cron. Cela peut être changé avec une variable "MAILTO".

Guide du débutant sur l'utilisation de Cron pour planifier des tâches sous Linux - Linux

"Ajouter" MAILTO=youremail@votredomaine.com Tous les rapports importants seront envoyés cron Pour un email spécifique. Cette variable se trouve en haut de l'écran d'édition de la crontab. Toutefois, si elle n’existe pas, vous pouvez ajouter la variable et elle fonctionnera comme prévu.

Plusieurs adresses électroniques peuvent être séparées par une virgule. Si vous avez besoin d'une commande différente par courrier électronique ailleurs, vous pouvez ajouter la commande MAILTO directement au-dessus de la commande. Les commandes seront envoyées après cette mailto À la nouvelle adresse. Si laissé MAILTO = Vide , Les notifications seront envoyées au propriétaire de l’entrée cron.

Vous pouvez également utiliser l'opérateur de redirection (>) pour envoyer la sortie lorsque vous en avez besoin.

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent > /dev/null

Cela redirigera la sortie vers "/ dev / null", qui n'envoie aucun courrier électronique et ignore la sortie.

Si vous voulez vous assurer qu'une tâche est en cours d'exécution et que vous ne voulez pas envoyer d'email, vous pouvez également vérifier les enregistrements cron. Dans la plupart des systèmes, l'accès aux enregistrements cron nécessitera des autorisations d'utilisateur privilégiées. L’enregistrement cron se trouve sous "/ var / log". Un fichier cron ou syslog affichera un enregistrement des entrées cron exécutées.

sudo grep crontab syslog
Guide du débutant sur l'utilisation de Cron pour planifier des tâches sous Linux - Linux

Cron peut être restreint davantage pour permettre une utilisation spécifique et peut définir les paramètres par défaut. Avec la tuyauterie et la redirection, les entrées cron peuvent être configurées pour faire toutes sortes de choses. En fin de compte, cron est un outil qui vous permet d'exécuter des tâches à votre guise et d'assurer la maintenance de routine de certaines parties de votre système après votre accord.

Aller au bouton supérieur