English English French French Spanish Spanish German German
Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

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

comprendre crontab
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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

Nous allons apprendre à 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.

Origine

Crontab signifie «table cron«. Le mot cron a été tiré du mot grec Chronos sens du temps. Crontab est un processus démon système qui exécutera automatiquement certaines tâches et travaux selon l'heure planifiée.

Les 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 l'administration du système type de travail.

En utilisant cron, un administrateur peut planifier une tâche à exécuter à une heure et un jour spécifiques.

Voyons donc comment nous pouvons mettre cela en place.

Crontab Syntax

Pour exécuter une liste de commandes, l'utilitaire cron lit les fichiers de configuration. Pour interpréter les lignes du crontab tables de configuration, 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 6e champ, pourrait être un nom d'utilisateur et / ou une tâche / un travail / une commande / un script à exécuter.

* * * * * USER_NAME COMMAND / SCRIPT-TO-EXECUTE

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

Notes:

  • L'astérisque (*) est utilisé pour faire correspondre toutes les valeurs possibles d'un champ. Par exemple, un astérisque utilisé dans le champ heure équivaudrait à chaque heure ou un astérisque dans le champ mois équivaudrait à chaque mois.
  • le nom d'utilisateur est facultatif (disponible uniquement s'il s'agit du fichier crontab système)

Exemples:

Comprenons la syntaxe ci-dessus avec quelques exemples

1. Planifiez l'exécution d'un cron à 5 heures du matin tous les jours

0 5 * * * /scripts/job.sh

2. Planifiez l'exécution d'un cron deux fois par jour à 6 h 6 et XNUMX h XNUMX

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

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

* * * * * /scripts/job.sh

4. Planifiez un cron à exécuter sur chaque Monday à 7 heures.

0 19 * * mon /scripts/job.sh

5. Planifiez l'exécution d'un cron toutes les 15 minutes.

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

6. Planifiez un cron à exécuter les mois sélectionnés

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

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

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

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.

  • Planifions d'abord une tâche qui s'exécute toutes les minutes.
* * * * * /home/scripts/script.sh
  • Maintenant utilisons sleep commande pour suspendre l'exécution pendant 30 secondes.
* * * * * sleep 30; /home/scripts/script.sh

La tâche ci-dessus arrêtera l'exécution pendant 30 secondes et reprendra.

Type of Cron configuration files

Il existe deux types de fichiers de configuration Cron:

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é au système crontab d'exécuter des commandes en tant qu'utilisateur.

L'utilisateur Crontab

L'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 éditer ou configurer nos propres tâches cron.

How does it work?

Le service cron (démon) s'exécute en arrière-plan et vérifie constamment (toutes les minutes) le /etc/crontab fichier, et /etc/cron.*/ répertoires. Il vérifie également le /var/spool/cron/ répertoire.

Les commandes sont exécutées par cron lorsque les champs des minutes, des heures et des 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.

Basic Commands

Liste des emplois Cron existants

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

crontab -l

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

[geekflare@localhost ~]# crontab -l
no crontab for geekflare
[geekflare@localhost ~]#

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

[geekflare@localhost ~]# 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
[geekflare@localhost ~]#

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 de la table cron.

Liste Cron pour un utilisateur particulier

Pour répertorier les travaux planifiés d'un autre utilisateur, utilisez l'option comme -u (Utilisateur) et -l (Liste).

crontab -u another_username -l

Exemple: crontab -u geekflare -l

Ajouter / modifier des entrées Crontab

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

crontab -e

La commande ci-dessus ouvre les éditeurs vi où vous spécifiez les détails du travail et enregistrez 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

Nous pouvons éditer le crontab pour un autre utilisateur en utilisant la commande ci-dessous

crontab -u another_username -e

Exemple: crontab -u geekflare -e

Supprimer l'entrée Crontab

Utilisez <strong>-r</strong> paramètre avec Crontab pour supprimer les tâches planifiées complètes sans confirmation de crontab

crontab -r

Si vous souhaitez obtenir une confirmation avant de supprimer les travaux planifiés, utilisez <strong>-i</strong> option avec -r, qui demandera une confirmation de l'utilisateur avant de supprimer le crontab de l'utilisateur.

crontab -i -r
[geekflare@localhost ~]# crontab -i -r
crontab: really delete geekflare's crontab?

Crontab Special String

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 améliorera également la lisibilité.

Chaîne spécialeDescription
@rebootExécutez une fois, après le démarrage.
@yearlyExécuter une fois par an, c'est-à-dire 0 0 1 1 *
@annuallyPareil que @yearly
@monthlyExécuter une fois par mois, c'est-à-dire 0 0 1 **
@weeklyExécuter une fois par semaine, c'est-à-dire 0 0 * * 0
@dailyExécuter une fois par jour, c'est-à-dire 0 0 * * *
@midnightPareil que @daily
@hourlyExécuter une fois par heure, c'est-à-dire 0 * * * *

Exemples de chaînes spéciales Crontab

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

@yearly /scripts/greeting.sh

Nous pouvons exécuter celui ci-dessus pour envoyer une salutation de nouvelle année, il s'exécutera à la première minute de chaque année.

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

@monthly /scripts/cleanup.sh

Nous pouvons exécuter ce qui précède pour effectuer des activités de nettoyage au début de chaque mois.

De même, nous pouvons utiliser une autre chaîne spéciale Crontab à des fins hebdomadaires, quotidiennes et horaires.

Cron Directory

L'administrateur système peut utiliser une planification cron à l'échelle du système qui se trouve dans 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

Crontab Realtime Examples

Discutons de quelques exemples en temps réel qu'un administrateur système ou des professionnels de l'informatique utilisent habituellement.

Supprimer les fichiers et répertoires vides

45 0 * * * geekflare find /tmp -type f -empty -delete

Au-dessus de l'expression cron trouvera les fichiers vides et le répertoire de / Tmp répertoire et il les supprimera. Ce travail s'exécutera à 12.45 AM sur une base quotidienne. Nous devons mentionner le nom d'utilisateur pour effectuer ce travail. Dans l'exemple ci-dessus, geekflare l'utilisateur exécute une opération de tâche cron.

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

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

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

Cron formatting & testing tools

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 n'est pas de configurer Cron régulièrement, il n'est peut-être pas possible de se souvenir de la syntaxe et cela ouvre la voie à 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 crontab.

Prenons un exemple en temps réel où je dois exécuter /home/processMonitor.sh toutes les 5 minutes entre Monday jusqu'à vendredi.

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

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

# 2. Générateur Crontab

Générateur 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 courrier électronique.

# 3. Gourou Crontab

Gourou Crontab est un simple éditeur d'expression de calendrier 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 de crontab. Au cas où 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 à 04:05, chaque jour, chaque mois et chaque semaine.

# 4. 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 vouloir 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 Teste pour voir les différentes dates auxquelles il sera exécuté.

Vérifions l'une de nos expressions cron 4 3 */2 * *qui devrait fonctionner à 03h04 (matin) 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 souhaitez acquérir des compétences avancées, consultez ceci cours.

Merci à nos commanditaires
Plus de bonnes lectures sur Linux
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder