GNU/Linux >> Tutoriels Linux >  >> Linux

Cron Job :un guide complet pour les débutants 2022

Faire la même tâche encore et encore peut être une véritable corvée. La planification des tâches cron permet aux utilisateurs d'automatiser les tâches sur un serveur privé virtuel ou tout système d'exploitation de type Unix. Cela permet de gagner un temps précieux, permettant aux utilisateurs de se concentrer sur d'autres tâches essentielles.

Dans ce guide complet pour les débutants, vous apprendrez les bases des tâches cron, y compris leurs types, leur syntaxe, leurs chaînes spéciales et leurs autorisations. À la fin de cet article, vous serez en mesure d'utiliser les tâches cron pour planifier des tâches plus efficacement.

Qu'est-ce qu'une tâche Cron ?

Cron est un programme utilitaire qui permet aux utilisateurs de saisir des commandes pour planifier des tâches de manière répétée à un moment précis. Les tâches planifiées dans cron sont appelées tâches cron . Les utilisateurs peuvent déterminer le type de tâche qu'ils souhaitent automatiser et quand elle doit être exécutée.

Cron est un démon - un processus d'arrière-plan exécutant des tâches non interactives. Sous Windows, vous connaissez peut-être les processus d'arrière-plan tels que les services qui fonctionnent de la même manière que le démon cron.

Un démon est toujours inactif, attendant qu'une commande lui demande d'effectuer une tâche particulière. La commande peut être saisie sur n'importe quel ordinateur du réseau.

Un fichier cron est un simple fichier texte qui contient des commandes à exécuter périodiquement à un moment précis. La table cron système par défaut ou le fichier de configuration crontab est /etc/crontab , situé dans le répertoire crontab /etc/cron.*/ .

Seuls les administrateurs système peuvent modifier le fichier système crontab. Cependant, les systèmes d'exploitation de type Unix prennent en charge plusieurs administrateurs. Chacun peut créer un fichier crontab et écrire des commandes pour effectuer des tâches à tout moment.

Avec les tâches cron, les utilisateurs peuvent automatiser la maintenance du système, la surveillance de l'espace disque et planifier des sauvegardes. En raison de leur nature, les tâches cron sont idéales pour les ordinateurs qui fonctionnent 24h/24 et 7j/7, comme les serveurs.

Bien que les tâches cron soient principalement utilisées par les administrateurs système, elles peuvent également être bénéfiques pour les développeurs Web.

Par exemple, en tant qu'administrateur de site Web, vous pouvez configurer une tâche cron pour sauvegarder automatiquement votre site tous les jours à minuit, une autre pour vérifier les liens brisés tous les lundis à minuit et une troisième pour vider le cache de votre site tous les vendredis à midi.

Cependant, comme tout autre programme, cron a des limites que vous devez prendre en compte avant de l'utiliser :

  • L'intervalle le plus court entre les tâches est de 60 secondes . Avec cron, vous ne pourrez pas répéter une tâche toutes les 59 secondes ou moins.
  • Centralisé sur un seul ordinateur. Les tâches Cron ne peuvent pas être distribuées sur plusieurs ordinateurs sur un réseau. Ainsi, si l'ordinateur exécutant cron tombe en panne, les tâches planifiées ne seront pas exécutées et les tâches manquées ne pourront être exécutées que manuellement.
  • Pas de mécanisme de relance automatique . Cron est conçu pour s'exécuter à des heures strictement spécifiées. Si une tâche échoue, elle ne s'exécutera plus avant la prochaine heure planifiée. Cela rend cron inadapté aux tâches incrémentielles.

Avec ces limitations, cron est une excellente solution pour les tâches simples qui s'exécutent à une heure précise avec des intervalles réguliers d'au moins 60 secondes.

Si vous souhaitez planifier une tâche ponctuelle pour plus tard, vous pouvez utiliser une autre méthode.

Opérations de base des tâches Cron

Ce didacticiel vous montrera comment planifier des tâches cron en saisissant des commandes dans un programme shell tel que Bash sous Linux ou un autre système d'exploitation de type Unix.

L'hébergement VPS de Hostinger fonctionne sur un système d'exploitation basé sur Linux. Par conséquent, apprendre à planifier des tâches cron augmentera considérablement l'efficacité de votre travail en tant qu'administrateur VPS. La ligne de commande pour VPS est accessible via PuTTY SSH.

Avant de procéder aux opérations de base de cron, il est essentiel de connaître les différents fichiers de configuration des tâches cron :

  • La crontab système. Utilisez-le pour planifier des tâches essentielles à l'échelle du système qui ne peuvent être modifiées qu'avec les privilèges root.
  • L'utilisateur crontab. Ce fichier permet aux utilisateurs de créer et de modifier des tâches cron qui ne s'appliquent qu'au niveau de l'utilisateur.

Si vous souhaitez modifier la crontab système, assurez-vous que l'utilisateur actuel dispose des privilèges root.

Voici quelques opérations de base que cron peut effectuer :

Pour créer ou modifier un fichier crontab , saisissez ce qui suit dans la ligne de commande :

crontab -e

Si aucun fichier crontab n'est trouvé dans votre système, la commande en créera automatiquement un nouveau. crontab -e vous permet d'ajouter, de modifier et de supprimer des tâches cron.

Vous aurez besoin d'un éditeur de texte comme vi ou nano pour éditer un fichier crontab. Lors de la saisie de crontab -e pour la première fois, il vous sera demandé de choisir l'éditeur de texte avec lequel vous souhaitez modifier le fichier.

Pour afficher une liste des tâches planifiées actives dans votre système, saisissez la commande suivante :

crontab -l

Si votre système compte plusieurs utilisateurs, vous pouvez afficher leurs listes de fichiers crontab en saisissant la commande suivante en tant que superutilisateur :

crontab -u username -l

Vous pouvez également facilement modifier les tâches planifiées d'autres utilisateurs en tapant la commande crontab suivante :

sudo su crontab -u username -e

Pour vous donner des privilèges root , ajoutez sudo su au début de la commande. Certaines commandes, dont celle-ci, ne peuvent être exécutées que par les utilisateurs root.

Enfin, pour supprimer toutes les tâches planifiées dans votre fichier crontab et recommencez, tapez la commande suivante :

crontab -r

Alternativement, la commande suivante est identique à crontab -r , sauf qu'il demandera à l'utilisateur une option oui/non avant de supprimer la crontab :

crontab -i

En plus de crontab, l'utilisateur root peut également ajouter des tâches cron à etc/cron.d annuaire. Il est particulièrement adapté à l'exécution de scripts pour les installations et les mises à jour automatiques.

Gardez à l'esprit que l'utilisateur qui ajoute des tâches cron à ce répertoire doit avoir un accès root et se conformer aux conventions de nommage des run-parts.

Alternativement, un utilisateur root peut déplacer ses scripts dans les répertoires suivants pour planifier leur exécution :

  • /etc/cron.hourly/ – Exécutez tous les scripts une fois par heure
  • /etc/cron.daily/ – Exécuter une fois par jour.
  • /etc/cron.weekly/ – Exécuter une fois par semaine.
  • /etc/cron.monthly/ – Exécuter une fois par mois.

Syntaxe Crontab

Pour créer une tâche cron, vous devez d'abord comprendre la syntaxe et le formatage de cron. Sinon, la configuration correcte des tâches cron peut ne pas être possible.

La syntaxe crontab se compose de cinq champs avec les valeurs possibles suivantes :

  • Minute. La minute de l'heure à laquelle la commande s'exécutera, allant de 0 à 59.
  • Heure. L'heure à laquelle la commande sera exécutée, comprise entre 0 et 23 au format 24 heures.
  • Jour du mois . Le jour du mois auquel l'utilisateur souhaite que la commande s'exécute, compris entre 1 et 31.
  • Mois . Mois au cours duquel l'utilisateur souhaite exécuter la commande, compris entre 1 et 12, représentant ainsi janvier à décembre.
  • Jour de la semaine. Le jour de la semaine d'exécution d'une commande, compris entre 0 et 6, représentant du dimanche au samedi. Dans certains systèmes, la valeur 7 représente le dimanche.

Ne laissez aucun champ vide.

Si, par exemple, vous souhaitez configurer une tâche cron pour exécuter root/backup.sh tous les vendredis à 17h37, voici à quoi devrait ressembler votre commande cron :

37 17 * * 5 root/backup.sh

Dans l'exemple ci-dessus, 37 et 17 représente 17h37. Les deux astérisques pour le Jour du mois et Mois champs signifient toutes les valeurs possibles. Cela signifie que la tâche doit être répétée peu importe la date ou le mois. Enfin, 5 représente le vendredi. L'ensemble de nombres est ensuite suivi de l'emplacement de la tâche elle-même.

Si vous n'êtes pas sûr d'écrire manuellement la syntaxe cron, vous pouvez utiliser des outils gratuits comme Crontab Generator ou Crontab.guru pour générer les nombres exacts pour l'heure et la date que vous voulez pour votre commande.

Pour définir l'heure correcte pour votre commande cron, la connaissance des opérateurs de tâches cron est essentielle. Ils vous permettent de spécifier les valeurs que vous souhaitez saisir dans chaque champ. Vous devez utiliser les opérateurs appropriés dans tous les fichiers crontab.

  • Astérisque (*) . Utilisez cet opérateur pour signifier toutes les valeurs possibles dans un champ. Par exemple, si vous souhaitez que votre tâche cron s'exécute toutes les minutes, écrivez un astérisque dans la Minute champ.
  • Virgule (,) . Utilisez cet opérateur pour répertorier plusieurs valeurs. Par exemple, écrire 1,5 dans le Jour de la semaine programmera la tâche à effectuer tous les lundis et vendredis.
  • Trait d'union (-) . Utilisez cet opérateur pour déterminer une plage de valeurs. Par exemple, si vous souhaitez configurer une tâche cron de juin à septembre, écrivez 6-9 dans le Mois champ fera le travail.
  • Séparateur (/) . Utilisez cet opérateur pour diviser une valeur. Par exemple, si vous souhaitez exécuter un script toutes les douze heures, écrivez */12 dans l'Heure champ.
  • Dernier (L) . Cet opérateur peut être utilisé dans les champs jour du mois et jour de la semaine. Par exemple, écrire 3L dans le champ jour de la semaine signifie le dernier mercredi d'un mois.
  • Jour de semaine (F) . Utilisez cet opérateur pour déterminer le jour de la semaine le plus proche d'une heure donnée. Par exemple, si le 1er d'un mois est un samedi, en écrivant 1W dans le champ jour du mois exécutera la commande le lundi suivant (le 3ème ).
  • Hachage (#). Utilisez cet opérateur pour déterminer le jour de la semaine, suivi d'un nombre compris entre 1 et 5. Par exemple, 1#2 signifie le deuxième lundi du mois.
  • Point d'interrogation (?) . Utilisez cet opérateur pour saisir "aucune valeur spécifique" pour les champs "jour du mois" et "jour de la semaine".

Chaînes spéciales de la tâche Cron

Des chaînes spéciales sont utilisées pour planifier des tâches cron à des intervalles de temps sans que l'utilisateur ait à déterminer l'ensemble logique de nombres à saisir. Pour les utiliser, écrivez un @ suivi d'une phrase simple.

Voici quelques chaînes spéciales utiles que vous pouvez utiliser dans les commandes :

  • @horaire . La tâche s'exécutera une fois par heure.
  • @quotidien ou @minuit . Ces chaînes exécuteront la tâche tous les jours à minuit.
  • @hebdomadaire . Utilisez-le pour exécuter des tâches une fois par semaine à minuit le dimanche.
  • @mensuel. Cette chaîne spéciale exécute une commande une fois le premier jour de chaque mois.
  • @annuel . Utilisez-le pour exécuter une tâche une fois par an à minuit le 1er janvier.
  • @reboot . Avec cette chaîne, la tâche ne s'exécutera qu'une seule fois au démarrage.

Important ! N'oubliez pas de faire très attention lorsque vous planifiez des tâches cron sensibles au fuseau horaire.

Exemples de syntaxe Cron

Maintenant que vous savez à quoi ressemble la syntaxe cron, nous allons passer en revue quelques exemples pour vous aider à mieux la comprendre.

Gardez à l'esprit que la sortie cron sera automatiquement envoyée à votre compte de messagerie local. Si vous ne souhaitez plus recevoir d'e-mails, vous pouvez ajouter >/dev/null 2>&1 à une commande comme dans l'exemple suivant :

0 5 * * * /root/backup.sh >/dev/null 2>&1

Si vous souhaitez envoyer la sortie à un compte de messagerie spécifique, ajoutez MAILTO suivi d'une adresse e-mail. Voici un exemple :

MAILTO="[email protected]"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Jetez un œil aux exemples de commandes suivants pour mieux comprendre la syntaxe cron :

Exemple Explication
0 0 * * 0 /root/backup.sh Effectuer une sauvegarde tous les dimanches à minuit.
0 * * * 1 /root/clearcache.sh Videz le cache toutes les heures le lundi.
0 6,18 * * * /root/backup.sh Sauvegarder les données deux fois par jour à 6h et 18h.
*/10 * * * * /scripts/monitor.sh Effectuer une surveillance toutes les 10 minutes.
*/15 * * * * /root/backup.sh Effectuez une sauvegarde toutes les 15 minutes.
* * 20 7 * /root/backup.sh Effectuez une sauvegarde toutes les minutes le 20 juillet.
0 22 * ​​* 1-5 /root/clearcache.sh Videz le cache tous les jours de la semaine (du lundi au vendredi) à 22h.
0 0 * * 2 * /root/backup.sh Effectuez une sauvegarde à minuit tous les mardis.
* * * 1,2,5 * /scripts/monitor.sh Effectuez une surveillance toutes les minutes en janvier, février et mai.
10-59/10 5 * * * /root/clearcache.sh Videz le cache toutes les 10 minutes à 5h du matin, à partir de 5h10.
0 8 1 */3 * /home/user/script.sh Exécutez la tâche tous les trimestres le premier jour du mois à 8h00.
0 * * * * /root/backup.sh Créer une sauvegarde toutes les heures.
* * * * * /scripts/script.sh ; /scripts/scrit2.sh Incluez plusieurs tâches sur une seule tâche cron. Utile pour programmer plusieurs tâches à exécuter en même temps.
@reboot /root/clearcache.sh Effacer le cache à chaque fois que vous allumez le système.
0 8 1-7 * 1 /scripts/script.sh Exécutez un script le premier lundi de chaque mois, à 8h00.
5 4 * * 0 /root/backup.sh Créer une sauvegarde tous les dimanches à 4h05.
15 9 1,20 * * /scripts/monitor.sh Effectuez la surveillance à 21h15 les 1er et 20 de chaque mois.
@hourly /scripts/monitor.sh Effectuer une surveillance toutes les heures.
0 0 1,15 * 3 /scripts/script.sh Exécutez un script à minuit tous les mercredis entre le 1er et le 15 de chaque mois.
15 14 1 * * /root/clearcache.sh Videz le cache le premier jour de chaque mois à 14h15.
00 08-17 * * 1-5 bin/check-db-status Vérifiez l'état de la base de données tous les jours du lundi au vendredi toutes les heures de 20h à 17h.
15 6 1 1 * /root/backup.sh Effectuez une sauvegarde tous les 1er janvier à 6h15.
0 0 * * * /scripts/monitor.sh Exécutez le script de surveillance une fois par jour à minuit.
0 0 15 * * /root/clearcache.sh Videz le cache à minuit le 15 de chaque mois.
* * * * 1,5 /scripts/monitor.sh Effectuer une surveillance tous les lundis et vendredis.

Autorisations Cron

Les deux fichiers suivants peuvent être créés ou modifiés pour autoriser ou empêcher les utilisateurs d'utiliser le fichier cron du système :

  • /etc/cron.allow – si cron.allow existe, il doit contenir le nom d'un utilisateur pour lui permettre d'utiliser les tâches cron.
  • /etc/cron.deny – si cron.allow n'existe pas mais cron.deny fait, l'utilisateur qui veut utiliser les tâches cron ne doit pas être répertorié dans le fichier.

Conclusion

La mise en place de tâches planifiées automatiquement est une solution pratique qui vous évite d'oublier des tâches importantes.

Les tâches Cron sont un excellent moyen pour les administrateurs système et les développeurs Web de gérer les tâches répétitives. Tout ce qui doit être fait est d'entrer les bonnes commandes et de choisir le bon temps d'exécution.

Pour planifier une tâche cron, utilisez la syntaxe correcte dans la ligne de commande. Alternativement, vous pouvez utiliser des chaînes spéciales pour faciliter le processus. N'oubliez pas d'attribuer les autorisations appropriées afin que seuls les utilisateurs autorisés puissent accéder au fichier cron.

Si vous recherchez une solution spécifique à WordPress, consultez notre tutoriel sur les tâches cron WordPress.

Nous espérons que cet article vous a aidé à comprendre les bases de l'utilisation des tâches cron pour planifier des tâches. Si vous avez des questions, n'hésitez pas à les laisser dans la section des commentaires.


Linux
  1. YAML pour les débutants

  2. Guide complet pour la configuration de l'authentification basée sur la clé SSH2

  3. CentOS / RHEL :Guide du débutant sur cron

  4. Tâches cron intensives ou tâches planifiées

  5. Configuration de la tâche Godaddy cron pour exécuter le script php

Guide de diffusion Spark pour les débutants

Un guide pour débutants sur LVM

Un guide du débutant sur les tâches Cron

Tâches Cron planifiées

Comment vérifier la sortie des tâches Cron chez Hostinger ?

Comment ajouter des tâches Cron dans cPanel