GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples cron utiles pour planifier des tâches sous Linux

Le système GNU/Linux prend en charge plusieurs utilitaires pour planifier les tâches. L'utilitaire cron est le plus largement pris en charge. Il vous permet de programmer des tâches à exécuter en arrière-plan à intervalles réguliers. L'utilitaire cron utilise une table (crontab) avec une liste de scripts ou de commandes à exécuter et l'heure à laquelle ils doivent être exécutés.

Planification des tâches

Les utilisateurs normaux peuvent utiliser la commande crontab pour gérer leurs travaux. Cette commande peut être appelée de quatre manières différentes :

Commande Fonction
crontab -l Liste des travaux pour l'utilisateur actuel
crontab -r Supprimer toutes les tâches des utilisateurs actuels.
crontab -e Modifier les travaux pour l'utilisateur actuel.
crontab [nom de fichier] Supprimez tous les travaux et remplacez-les par les travaux lus à partir de [nom de fichier]. Si aucun fichier n'est spécifié, stdin sera utilisé.

Comment modifier et afficher la crontab

Lors de la modification de travaux avec le "crontab -e “, un éditeur sera démarré (vi par défaut. sauf si la variable d'environnement EDITOR a été définie sur quelque chose de différent). Le fichier en cours d'édition aura un travail par ligne. Les lignes vides sont autorisées et les commentaires commencent leur ligne par un symbole dièse (#).

# crontab -e

Lorsque vous exécutez la commande "crontab -e" sans aucune option, la crontab de l'utilisateur actuellement connecté sera éditée par défaut. Pour modifier la crontab d'un autre utilisateur, vous pouvez utiliser l'option -u avec la commande crontab. Par exemple, pour éditer la crontab de l'utilisateur john.

# crontab -u john -e

De même, pour afficher la crontab de l'utilisateur actuel, utilisez la commande "crontab -l ” commande.

# crontab -l

Et pour lister la crontab d'un utilisateur spécifique, utilisez la commande ci-dessous.

# crontab -u john -l

Fichiers de configuration Cron

Le processus d'arrière-plan cron est principalement inactif. Il se réveille une fois par minute et vérifie /etc/crontab, /etc/cron.d et les fichiers de la table cron de l'utilisateur et détermine s'il y a des travaux qui doivent être exécutés.

Le tableau ci-dessous résume le but des différents fichiers et répertoires utilisés par cron. La connaissance de ces fichiers et répertoires vous aidera à résoudre les problèmes et à comprendre cron plus en détail.

Fichier Objectif
/etc/init.d/crond Démarre le démon cron au démarrage du système.
/var/log/cron Messages système liés au processus cron. Utile pour résoudre les problèmes.
/var/spool/cron/[nom d'utilisateur] Les fichiers crontab utilisateurs sont stockés dans le répertoire /var/spool/cron.
/etc/cron.allow Spécifie les utilisateurs qui peuvent créer une table cron.
/etc/cron.deny Spécifie les utilisateurs qui ne sont pas autorisés à créer une table cron.
/etc/crontab La table cron du système qui contient des commandes pour exécuter des scripts situés dans les répertoires suivants : /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly et /etc/cron.monthly.
/etc/cron.d Un répertoire contenant des tables cron pour les tâches qui doivent s'exécuter selon un calendrier autre qu'horaire, quotidien, hebdomadaire ou mensuel.
/etc/cron.hourly Répertoire contenant les scripts système à exécuter toutes les heures.
/etc/cron.daily Répertoire contenant les scripts système à exécuter quotidiennement.
/etc/cron.weekly Répertoire contenant les scripts système à exécuter sur une base hebdomadaire.
/etc/cron.monthly Répertoire contenant les scripts système à exécuter sur une base mensuelle.

Syntaxe Crontab

Les travaux des utilisateurs individuels sont stockés dans le répertoire /var/spool/cron dans des fichiers correspondant aux noms d'utilisateur. Ces fichiers appartiennent toujours à l'utilisateur root. Les fichiers dans /var/spool/cron ne sont pas modifiés directement. Au lieu de cela, un programme appelé crontab est utilisé pour les manipuler. La figure ci-dessous montre la syntaxe d'une tâche cron.

Chaque ligne d'un fichier définit une tâche. Il y a 6 champs dans une ligne. Les 5 premiers champs définissent l'heure, le dernier champ contient la commande à exécuter. Il peut s'agir de n'importe quel type de commande ou de script shell. Les 5 premiers champs ont le format suivant :

Champ Plage
Minutes 0-59
Heures 0-23
Jour du mois 1-31
Mois 0-12
Jour de semaine 0-7

Exemples de tâches cron

1. Planifier un travail au 2 février de chaque année

Vous devez exécuter un script de sauvegarde une fois par an à une date précise du mois de février. La syntaxe est illustrée ci-dessous.

0 9 2 2 *   /usr/local/bin/yearly_backup

2. Planifiez une tâche toutes les heures à la cinquième minute, tous les jours

Utilisez la commande suivante pour exécuter un script toutes les heures à la cinquième minute, tous les jours :

5 * * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

3. Planifiez une tâche 5 minutes après minuit tous les jours

Utilisez la commande suivante pour exécuter 5 minutes après minuit tous les jours :

5 0 * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

4. Planifiez une tâche à une heure précise le premier de chaque mois

Utilisez la commande suivante pour exécuter à 14h15. le premier de chaque mois :

15 14 1 * * *     $HOME/bin/monthly

5. Planifier une tâche à une heure précise uniquement les jours de semaine (exclure le samedi et le dimanche)

Utilisez la commande suivante pour exécuter à 22 h. en semaine :

0 22 * * 1-5  $HOME/bin/weekday.job >> $HOME/tmp/out  2>&1

6. Planification de plusieurs tâches dans une seule tâche cron

Nous pouvons également planifier plusieurs tâches dans une seule tâche cron en utilisant des tâches séparées par un point-virgule (;) comme indiqué ci-dessous :

0 12 * * * /var/tmp/script01.sh; /var/tmp/script02.sh

7. Utilisation de plages pour spécifier les heures de début

Les plages peuvent être spécifiées à l'aide d'un trait d'union. Une valeur de 1 à 5 indique que ce champ est valide pour les nombres 1 à 5. Si vous utilisez un nom au lieu d'un nombre, vous ne pouvez pas spécifier de plage. Un exemple de spécification de plages est illustré ci-dessous. La tâche est planifiée pour s'exécuter toutes les heures à partir de 15 h 00. Jusqu'à 22h

* 3-10 * * * /var/tmp/script.sh

8. Utilisation des valeurs de pas pour spécifier les heures de début

Les valeurs de pas peuvent être utilisées conjointement avec des plages. Pour spécifier une valeur de pas, faites suivre la plage d'une barre oblique (/) et d'un nombre. Le nombre spécifié est la valeur du pas. Par exemple, ce qui suit spécifie qu'une valeur sur trois (dans ce cas, 2, 5, 8 et 11) doit correspondre :

* 0-12/3 * * *  /var/tmp/script.sh

Les valeurs de pas peuvent également être utilisées avec des astérisques. La valeur */3 dans le champ de l'heure correspondrait toutes les trois heures (0, 3, 6, 9, 12, 15, 18 et 21).

9. Utiliser des listes pour spécifier les heures de début

Les listes sont également acceptables; chaque élément d'une liste est séparé par une virgule. Il est courant d'utiliser des listes en conjonction avec des plages, comme ceci :

1-15,31-45 * * * *  /var/tmp/script.sh

Cet exemple correspond à tous les nombres (minutes dans notre cas) de 1 à 15 et de 31 à 45. Si vous utilisez un nom au lieu d'un nombre, vous ne pouvez pas spécifier de liste.

10. Planifiez une tâche à 4h45, les 1er, 10 et 22 de chaque mois

Vous trouverez ci-dessous un exemple d'exécution d'une tâche à une heure précise sur quelques jours spécifiques du mois.

45 4 1,10,22 * * /apps/bin/backup.sh 

Macro Crontab

Nous pouvons ajouter des macros dans le fichier crontab. Par exemple, utilisez ce qui suit pour redémarrer "my_script" après chaque redémarrage :

@reboot  /var/tmp/my_script

Voici un résumé de quelques macros supplémentaires :

Entrée Description Équivalent à
@reboot Exécuter une fois au démarrage Aucun
@hebdomadaire Exécuter une fois par semaine 0 0 * * 0
@quotidien Exécuter une fois par jour 0 0 * * *
@minuit (identique à @daily) 0 0 * * *
@horaire Exécuter une fois par heure 0 * * * *

Traitement de la sortie

Un script imprime souvent quelque chose à l'écran, soit pour le débogage, les mises à jour de statut, soit pour consigner une erreur. Tout ce qu'un travail imprime à l'écran est envoyé dans un e-mail à l'utilisateur actuel, qui peut être remplacé par la variable MAILTO dans la crontab.

# crontab -l
MAIL=john
0 2 * * * /apps/bin/backup.sh
Comment planifier des tâches avec Cron sous Linux
Définition des tâches système à l'aide de Cron sous Linux
UNIX / Linux :Comment crontab valide l'accès en fonction des fichiers cron.allow et cron.deny
CentOS / RHEL :bases d'anacron (Qu'est-ce qu'anacron et comment le configurer)
CentOS / RHEL :Guide du débutant pour cron


Linux
  1. Comment utiliser cron sous Linux

  2. 12 exemples de commandes Wget utiles sous Linux

  3. Commande ls sous Linux :17 exemples utiles expliqués

  4. Comment planifier des tâches Cron avec Crontab

  5. 6 Exemples de commandes Linux Crontab

Cron Jobs et Crontab sur Linux expliqués

Comprendre Crontab sous Linux avec des exemples

Commande Linux crontab pour créer et gérer des tâches Cron

12 exemples de commandes de date Linux utiles

Linux Crontab :15 exemples de tâches Cron impressionnants

Comment planifier des tâches avec Cron sous Linux