Comment créer et gérer des tâches Cron sous Linux

Cron permet aux utilisateurs Linux et Unix d’exécuter des commandes ou des scripts à une date et une heure données. Vous pouvez planifier l’exécution périodique de scripts. Cron est l’un des outils les plus utiles des systèmes d’exploitation Linux ou UNIX. Il est généralement utilisé pour les tâches d’administration système telles que les sauvegardes ou le nettoyage des répertoires /tmp/, etc. Le service cron(démon) s’exécute en arrière-plan et vérifie en permanence le fichier /etc/crontab et les répertoires /etc/cron.*/. Il vérifie également le répertoire /var/spool/cron/.
 
 

La commande crontab

Vous devez utiliser la commande crontab pour modifier, créer, installer, désinstaller ou lister les tâches cron. Chaque utilisateur peut avoir son propre fichier crontab. Bien qu’il s’agisse de fichiers dans /var/spool/cron/crontabs, ils ne sont pas destinés à être modifiés directement. Vous devez utiliser la commande crontab pour modifier ou configurer vos propres tâches cron.
 

Types de fichiers de configuration de cron

Il existe différents types de fichiers de configuration:

  • Crontab du système UNIX/Linux: généralement utilisée par les services système et les tâches critiques nécessitant des privilèges de type root. Le sixième champ (voir ci-dessous pour la description du champ) est le nom d’un utilisateur pour lequel la commande doit être exécutée. Cela donne au système crontab la possibilité d’exécuter des commandes en tant qu’utilisateur.
  • Les crontabs utilisateurs: l’utilisateur peut installer ses propres tâches cron à l’aide de la commande crontab. Le sixième champ est la commande à exécuter et toutes les commandes sont exécutées sous le nom de l’utilisateur qui a créé le crontab.
Comment installer, créer ou éditer mes propres tâches cron?

Pour éditer ou créer votre propre fichier crontab, tapez la commande suivante à l’invite du shell:

$ crontab -e

 

Syntaxe de crontab

Le format typique d’une tâche Cron est le suivant:

Minute(0-59) Heure(0-24) Jour_du_mois(1-31) Mois(1-12) Jour_du_semaine(0-6) Commande_à_exécuter

Il suffit de mémoriser le format suivante.

* * * * * commande à exécuter
- - - - -
| | | | |
| | | | ----- Jour de la semaine (0 - 7)
| | | ------- Mois (1 - 12)
| | --------- Jour du mois (1 - 31)
| ----------- Heure (0 - 23)
------------- Minute (0 - 59)

Les astérisques « * * * * * » font référence aux blocs de temps spécifiques.

Pour afficher le contenu du fichier crontab de l’utilisateur actuellement connecté, exécuter la commande:

$ crontab -l

Pour éditer les tâches cron de l’utilisateur actuel, procédez comme suit:

$ crontab -e

Si c’est la première fois que vous allez éditer les tâches cron, il vous sera demandé de choisir un éditeur pour éditer les tâches cron. Choisissez celui qui vous convient.

Pour éditer le crontab d’un autre utilisateur, par exemple waytolearnx, procédez comme suit:

$ crontab -u waytolearnx -e

 
 

Regardons quelques exemples

1. Pour exécuter une tâche Cron à chaque minute, le format devrait être comme ci-dessous.

* * * * * <commande_à_exécuter>

Par exemple, si l’heure est 08:00, la prochaine tâche sera exécutée à 08:01, 08:02, 08:03 et ainsi de suite.

2. Planifiez un cron pour exécuter à 2h tous les jours.

0 2 * * * /bin/sh backup.sh

Cela sera utile pour planifier la sauvegarde de la base de données quotidiennement.

3. Planifiez un cron pour qu’il s’exécute deux fois par jour. L’exemple ci-dessous s’exécutera tous les jours à 5 heures et à 17 heures. Vous pouvez spécifier plusieurs horodatages séparés par des virgules.

0 5,17 * * * /scripts/script.sh

4. Planifiez un cron pour qu’il s’exécute tous les dimanches à 17 heures.

0 17 * * sun  /scripts/script.sh

Ce type de cron est utile pour effectuer des tâches hebdomadaires, telles que les logs, etc.

5. Planifiez un cron pour qu’il s’exécute toutes les 10 minutes.

*/10 * * * * /scripts/script.sh

Ce type de cron est utiles pour le monitoring.

6. Planifiez un cron pour qu’il s’exécute toutes les 5 minutes.

*/5 * * * * /scripts/script.sh

Par exemple, si l’heure est 08:00, la prochaine tâche sera exécutée à 08:05, 08:10, 08:15 et ainsi de suite.

7. Pour exécuter une tâche cron tous les quarts d’heure (c’est-à-dire toutes les 15 minutes), ajoutez ceci:

*/15 * * * * /scripts/script.sh

Par exemple, si l’heure est 08:00, la prochaine tâche sera exécutée à 08:15, 08:30, 08:45 et ainsi de suite.

8. Pour exécuter une tâche cron toutes les heures (à 0 min):

0 * * * * /scripts/script.sh

Par exemple, si l’heure est 08:00, la prochaine tâche sera exécutée à 09:00, 10:00, 11:00 et ainsi de suite.

9. Planifiez un cron toutes les 2 heures:

0 */2 * * * /scripts/script.sh

Par exemple, si l’heure est 08:00, la prochaine tâche sera exécutée à 10:00, 12:00, 14:00 et ainsi de suite.

10. Planifiez un cron tous les mois (à 00:00 le jour du mois 1):

0 0 1 * * /scripts/script.sh

 
 
11. Planifiez un cron tous les 6 mois:

0 0 1 */6 * /scripts/script.sh

 
Nous pouvons également utiliser les chaînes suivantes pour définir un Cron.

@reboot Exécuter une fois, au démarrage.
@yearly Exécuter une fois par an.
@annually (idem @yearly).
@monthly Exécuter une fois par mois.
@weekly Exécuter une fois par semaine.
@daily Exécuter une fois par jour.
@midnight (idem @daily).
@hourly Exécuter une fois par heure.

12. Pour planifiez un cron à chaque redémarrage du serveur, ajoutez cette ligne dans votre fichier crontab.

@reboot <commande_à_exécuter>

13. Pour supprimer tous les cron de l’utilisateur actuel:

$ crontab -r

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *