Crontab sous Linux – avec des exemples et des outils en temps réel

Explorons crontab, ses commandes et diverses opérations associées à Crontab.

Nous apprendrons comment planifier des tâches à l’aide de l’utilitaire cron, et enfin, nous discuterons également de certains des outils en ligne qui nous aident à formater et à tester les commandes cron.

Table des matières

Origine

Crontab signifie « table cron ». Le mot cron vient du grec Chronos qui signifie temps. Crontab est un processus démon système qui effectuera automatiquement certaines tâches et certains travaux selon l’heure planifiée.

  Comment configurer l'application de prise de notes Joplin sous Linux

Cas d’utilisation

Crontab est utile pour effectuer diverses opérations telles que la gestion de la sauvegarde automatisée, la rotation des fichiers journaux, la synchronisation des fichiers entre des machines distantes et la suppression des dossiers temporaires, etc. Crontab peut être utilisé pour tout type de travail, mais il devient particulièrement utile lorsque nous commençons à traiter avec type de travail d’administration système.

À l’aide de cron, un administrateur peut programmer une tâche pour qu’elle s’exécute à une heure et un jour spécifiques.

Voyons donc comment nous pouvons mettre cela en place.

Syntaxe Crontab

Pour exécuter une liste de commandes, l’utilitaire cron lit les fichiers de configuration. Pour interpréter les lignes des tables de configuration crontab, il suit une syntaxe Crontab. Crontab a six champs, et les cinq premiers champs (1-5) définissent la date et l’heure d’exécution. Le dernier champ, c’est-à-dire le 6ème champ, pourrait être un nom d’utilisateur et/ou une tâche/travail/commande/script à exécuter.

* * * * * COMMANDE/SCRIPT-À-EXÉCUTER NOM_UTILISATEUR

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Jour de la semaine (0 – 6) (0 est dimanche, ou utilisez des noms)
│ │ │ |____________ Mois (1 – 12),* signifie tous les mois
│ │ |______________ Jour du mois (1 – 31),* signifie tous les jours
│ |________________ Heure (0 – 23),* signifie toutes les heures
|___________________ Minute (0 – 59), * signifie toutes les minutes

Remarques:

  • Astérisque
  • est utilisé pour faire correspondre toutes les valeurs possibles pour un champ. Par exemple, un astérisque utilisé dans le champ heure équivaut à chaque heure ou un astérisque dans le champ mois équivaut à chaque mois.

le nom d’utilisateur est facultatif (disponible uniquement s’il s’agit du fichier système crontab)

Exemples:

Comprenons la syntaxe ci-dessus avec quelques exemples

0 5 * * * /scripts/job.sh

1. Planifiez un cron à exécuter à 5 heures du matin tous les jours

0 6,18 * * * /scripts/job.sh

2. Programmez un cron à exécuter deux fois par jour à 6h et 18h

* * * * * /scripts/job.sh

3. Planifiez un cron à exécuter toutes les minutes

0 19 * * mon /scripts/job.sh

4. Planifiez un cron à exécuter tous les lundis à 19 heures.

*/10 * * * * /scripts/job.sh

5. Programmez un cron à exécuter toutes les 15 minutes.

* * * feb,jun,oct * /script/job.sh

6. Planifier un cron à exécuter sur des mois sélectionnés

25 7 4 3 * /home/script/backup.sh

7. Exécutez le script shell /home/script/backup.sh le 4 mars à 7h25.

8. Planifiez un cron à exécuter toutes les 30 secondes

  • Puisque nous n’avons pas de contrôle sur les secondes dans le Crontab, nous pouvons y parvenir grâce au processus en deux étapes ci-dessous.
* * * * * /home/scripts/script.sh
  • Planifions d’abord une tâche qui s’exécute toutes les minutes.
* * * * * sleep 30; /home/scripts/script.sh

Utilisons maintenant la commande sleep pour suspendre l’exécution pendant 30 secondes.

La tâche ci-dessus arrêtera l’exécution pendant 30 secondes, et elle reprendra à nouveau.

Type de fichiers de configuration Cron

  Les 6 meilleurs outils d'extraction de crypto-monnaie pour Linux

Il existe deux types de fichiers de configuration Cron :

La Crontab du système UNIX/Linux

Cela nécessite le privilège root car il est généralement utilisé pour les services système et les travaux critiques. Le sixième champ (dans la description de la syntaxe ci-dessus) est le nom d’un utilisateur sous lequel la commande doit être exécutée. Il donne la possibilité à la crontab du système d’exécuter des commandes comme n’importe quel utilisateur.

La Crontab utilisateur

Un utilisateur peut également installer ses propres tâches cron à l’aide de la commande crontab. Ici aussi, le sixième champ (dans la description de la syntaxe ci-dessus) est la commande à exécuter, et toutes les commandes s’exécutent en tant qu’utilisateur qui a créé la crontab. Chaque utilisateur peut avoir son propre fichier crontab, et bien qu’il s’agisse de fichiers dans /var/spool/cron/crontabs, ils ne sont pas destinés à être modifiés directement. Nous devons utiliser la commande crontab pour modifier ou configurer nos propres tâches cron.

Comment ça marche? Le service cron (démon) s’exécute en arrière-plan et vérifie constamment (toutes les minutes) le fichier /etc/crontab et les répertoires /etc/cron.*/. Il vérifie également le répertoire /var/spool/cron/. Les commandes sont exécutées par cron

lorsque les champs minute, heure et mois correspondent à l’heure actuelle et qu’au moins un des champs de deux jours (jour du mois ou jour de la semaine) correspond au jour actuel.

Commandes de base

Liste des tâches Cron existantes

crontab -l

Nous pouvons répertorier toutes les tâches Cron sans ouvrir le fichier de configuration crontab en utilisant la commande ci-dessous

[[email protected] ~]# crontab -l
no crontab for toptips.fr
[[email protected] ~]#

S’il n’y a pas de travail existant, il renverra la sortie comme

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Si l’utilisateur a déjà ajouté certains des travaux, il s’affichera comme suit.

La table cron est spécifique à l’utilisateur, ce qui signifie que vous devez être connecté avec un utilisateur spécifique pour voir la liste des tables cron.

Lister Cron pour un utilisateur particulier

Pour répertorier les tâches planifiées d’un autre utilisateur, utilisez l’option -u (utilisateur) et -l (liste).

crontab -u autre_nom_utilisateur -l

Exemple : crontab -u toptips.fr -l

Ajouter/modifier des entrées Crontab

Pour modifier l’entrée crontab, nous pouvons utiliser l’option -e comme indiqué ci-dessous.

  Comment installer l'éditeur graphique Vectr sur Linux

crontab -e

La commande ci-dessus ouvrira les éditeurs vi dans lesquels vous spécifierez les détails du travail et enregistrerez le fichier. Une fois enregistré, vous pouvez vérifier si cron est configuré ou non avec crontab -l.

Ajouter/modifier des entrées Crontab pour un utilisateur particulier

crontab -u another_username -e

Nous pouvons modifier la crontab pour un autre utilisateur en utilisant la commande ci-dessous

Exemple : crontab -u toptips.fr -e

Supprimer l’entrée Crontab

Utilisez le paramètre -r avec Crontab pour supprimer des tâches planifiées complètes sans confirmation de crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete toptips.fr's crontab?

Si vous voulez une confirmation avant de supprimer les tâches planifiées, utilisez l’option -i avec -r, qui demandera la confirmation de l’utilisateur avant de supprimer la crontab de l’utilisateur.

Chaîne spéciale Crontab

Outre la syntaxe ci-dessus dont nous avons discuté, nous pouvons également utiliser huit chaînes spéciales fournies par Crontab. Cela nous fera non seulement gagner du temps, mais cela améliorera également la lisibilité.
Chaîne spéciale
La description
@redémarrer
Exécuter une fois, après le démarrage.
@annuel
Exécuter une fois par an, c’est-à-dire 0 0 1 1 *
@annuellement
Identique à @annuel
@mensuel
Exécuter une fois par mois, c’est-à-dire 0 0 1 * *
@hebdomadaire
Exécuter une fois par semaine, c’est-à-dire 0 0 * * 0
@du quotidien
Exécuter une fois par jour, c’est-à-dire 0 0 * * *
@minuit
Identique à @daily
@horaire

Exécuter une fois par heure, c’est-à-dire 0 * * * *

Exemples de chaînes spéciales Crontab

1. Crontab pour planifier les tâches sur une base annuelle

@annuel /scripts/salutation.sh

Nous pouvons exécuter ci-dessus pour envoyer un message d’accueil de nouvel an, il s’exécutera à la première minute de chaque année.

2. Crontab pour programmer les tâches à exécuter sur une base mensuelle.

@monthly /scripts/cleanup.sh

Nous pouvons exécuter celui ci-dessus pour effectuer des activités de nettoyage au début de chaque mois.

De même, nous pouvons utiliser d’autres chaînes spéciales Crontab à des fins hebdomadaires, quotidiennes et horaires.

Annuaire Cron

  • L’administrateur système peut utiliser une planification cron à l’échelle du système qui se trouve sous le répertoire cron prédéfini, comme indiqué ci-dessous.
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Exemples en temps réel Crontab

Examinons quelques-uns des exemples en temps réel qu’un administrateur système ou des professionnels de l’informatique utilisent habituellement.

Supprimer les fichiers et le répertoire vides

45 0 * * * toptips.fr trouver /tmp -type f -empty -delete

L’expression cron ci-dessus trouvera les fichiers et le répertoire vides du répertoire /tmp et les supprimera. Ce travail s’exécutera à 00h45 sur une base quotidienne. Nous devons mentionner le nom d’utilisateur pour effectuer ce travail. Dans l’exemple ci-dessus, l’utilisateur toptips.fr effectue une opération cron.

Exécuter plusieurs tâches à l’aide d’un seul cron

* * * * * /home/scripts/backup.sh; /home/scripts/scriptp.sh

Plusieurs tâches/travaux peuvent être séparés à l’aide d’un point-virgule (;) et peuvent être affectés à une seule expression cron.

Outils de formatage et de test Cron

Jusqu’à présent, nous avons discuté des commandes et de la syntaxe de crontab pour planifier une tâche. Mais que se passe-t-il si vous n’êtes pas un administrateur système et que votre travail ne consiste pas à configurer Cron régulièrement, il peut ne pas être possible de se souvenir de la syntaxe et cela ouvre la porte à l’erreur. Ne vous inquiétez pas, nous avons une solution à ce problème.

Il existe plusieurs outils de formatage Cron disponibles en ligne.

# 1. Générateur de tâches Cron Générateur de tâches Cron

est une interface graphique très conviviale où vous pouvez spécifier la minute, les jours et le chemin du script pour générer la crontab.

Prenons un exemple en temps réel où je dois exécuter /home/processMonitor.sh toutes les 5 minutes du lundi au vendredi.

Donc, j’ai la syntaxe Cron ci-dessous que je peux mettre dans ma crontab en exécutant
crontab-e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

est un planificateur de tâches cron basé sur le Web. Nous pouvons créer une tâche cron en spécifiant une URL à appeler, nous pouvons définir l’heure à laquelle elle doit être exécutée. Nous pouvons également spécifier une expression cron ou l’ajouter manuellement à partir d’un formulaire descriptif. Surtout, nous pouvons éventuellement utiliser l’authentification HTTP de base pour une petite couche de sécurité.

Non seulement cela, mais Easycron peut également être utilisé à d’autres fins telles que l’expression Cron standard, les journaux d’exécution des tâches Cron, la notification par e-mail, les journaux d’échec séparés, etc.

# 3. Générateur de Crontab Générateur de Crontab

est un autre outil pratique pour générer crontab et avec cet outil, vous pouvez également ajouter si vous souhaitez enregistrer la sortie cron dans le fichier ou l’envoyer par e-mail.

# 4. Gourou Crontab Gourou Crontab

est un simple éditeur d’expressions de planification cron en ligne. De plus, il fournit un moyen utile de surveiller votre cronjob. Tout ce que nous avons à faire est de copier une commande fournie et de l’ajouter à la fin de la définition crontab. Si la tâche cron échoue ou ne démarre même pas, vous recevrez un e-mail d’alerte.

Dans l’exemple ci-dessous, Job s’exécutera à 04h05, tous les jours, tous les mois et toutes les semaines.

# 5. Testeur CRON Testeur CRON

nous permet de tester les définitions d’heure/date cron. Il peut y avoir une situation où nous devons décoder la syntaxe cron existante pour le dépannage ou simplement pour faire un test.

Pour ce faire, nous pouvons utiliser cet outil. Tout ce que nous avons à faire est de copier et coller notre expression cron dans le champ de définition cron, puis de choisir le nombre d’itérations et de cliquer sur Test pour voir les différentes dates auxquelles il s’exécutera.

Vérifions l’une de nos expressions cron 4 3 */2 * * qui devrait s’exécuter à 03h04 (AM) tous les deux jours. Vérifions-le avec le testeur cron.

Conclusion J’espère que ce qui précède vous aidera à mieux comprendre Crontab et à configurer les tâches cron. La planification des tâches via Cron est l’une des nombreuses tâches effectuées par Linux Admin. Si vous êtes intéressé à apprendre les compétences avancées, consultez cecicours

.