GNU/Linux >> Tutoriels Linux >  >> Linux

Linux Crontab :15 exemples de tâches Cron impressionnants

Un administrateur système Linux expérimenté connaît l'importance d'exécuter automatiquement les tâches de maintenance de routine en arrière-plan.

L'utilitaire Linux Cron est un moyen efficace de planifier une tâche d'arrière-plan de routine à une heure et/ou un jour spécifiques de manière continue.

Cet article fait partie de la série en cours Productivity Tips For Geeks. Dans cet article, passons en revue 15 exemples impressionnants de planification de tâches crontab.

Format Crontab Linux

MIN HOUR DOM MON DOW CMD
Table :Champs Crontab et plages autorisées (syntaxe Linux Crontab)
Champ Description Valeur autorisée
MIN Champ des minutes 0 à 59
HEURE Champ heure 0 à 23
DOM Jour du mois 1-31
LUN Champ Mois 1-12
DOW Jour de la semaine 0-6
CMD Commande Toute commande à exécuter.

1. Planification d'une tâche à une heure précise

L'utilisation de base de cron consiste à exécuter une tâche dans un délai précis, comme indiqué ci-dessous. Cela exécutera le script shell de sauvegarde complète (full-backup) le 10 juin à 08h30 .

Veuillez noter que le champ de l'heure utilise le format 24 heures. Ainsi, pour 8h00, utilisez 8 et pour 20h00, utilisez 20.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30e minute
  • 08 – 08h00
  • 10 – 10ème jour
  • 06 – 6ème mois (juin)
  • * – Tous les jours de la semaine

2. Planifier une tâche pour plusieurs instances (par exemple, deux fois par jour)

Le script suivant effectue une sauvegarde incrémentielle deux fois par jour tous les jours.

Cet exemple exécute le script shell de sauvegarde incrémentielle spécifié (incremental-backup) à 11h00 et 16h00 tous les jours. La valeur séparée par des virgules dans un champ spécifie que la commande doit être exécutée dans tout le temps mentionné.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – 0ème minute (haut de l'heure)
  • 11,16 – 11h et 16h
  • * – Tous les jours
  • * – Tous les mois
  • * – Tous les jours de la semaine

3. Planifier une tâche pour une plage horaire spécifique (par exemple, uniquement les jours de semaine)

Si vous souhaitez qu'une tâche soit planifiée pour chaque heure dans une plage de temps spécifique, utilisez ce qui suit.

Cron Job tous les jours pendant les heures de travail

Cet exemple vérifie l'état de la base de données tous les jours (y compris les week-ends) pendant les heures de travail de 9h00 à 18h00

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – 0ème minute (haut de l'heure)
  • 09-18 – 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h
  • * – Tous les jours
  • * – Tous les mois
  • * – Tous les jours de la semaine

Cron Job tous les jours de la semaine pendant les heures de travail

Cet exemple vérifie l'état de la base de données tous les jours de la semaine (c'est-à-dire à l'exception du samedi et du dimanche) pendant les heures de travail de 9 h 00 à 18 h 00.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – 0ème minute (haut de l'heure)
  • 09-18 – 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h
  • * – Tous les jours
  • * – Tous les mois
  • 1-5 -Lun, mar, mer, jeu et ven (tous les jours de la semaine)

4. Comment afficher les entrées Crontab ?

Afficher les entrées Crontab de l'utilisateur actuellement connecté

Pour afficher vos entrées crontab, tapez crontab -l à partir de votre compte unix, comme indiqué ci-dessous.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: This displays crontab of the current logged in user]

Afficher les entrées de la Crontab racine

Connectez-vous en tant qu'utilisateur root (su - root) et faites crontab -l comme indiqué ci-dessous.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo :Afficher les entrées Crontabs d'autres utilisateurs Linux

Pour afficher les entrées crontab d'autres utilisateurs Linux, connectez-vous à root et utilisez -u {username} -l comme indiqué ci-dessous.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. Comment modifier les entrées Crontab ?

Modifier les entrées Crontab de l'utilisateur actuellement connecté

Pour modifier une entrée crontab, utilisez crontab -e comme indiqué ci-dessous. Par défaut, cela modifiera la crontab des utilisateurs actuellement connectés.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

Lorsque vous enregistrez le fichier temporaire ci-dessus avec :wq, il enregistre la crontab et affiche le message suivant indiquant que la crontab a été modifiée avec succès.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

Modifier les entrées de la Crontab racine

Connectez-vous en tant qu'utilisateur root (su - root) et faites crontab -e comme indiqué ci-dessous.

root@dev-db# crontab -e

Modifier les entrées du fichier Crontab d'autres utilisateurs Linux

Pour modifier les entrées crontab d'autres utilisateurs Linux, connectez-vous à root et utilisez -u {username} -e comme indiqué ci-dessous.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Planifiez une tâche pour chaque minute à l'aide de Cron.

Idéalement, vous n'aurez peut-être pas l'obligation de planifier une tâche toutes les minutes. Mais comprendre cet exemple vous aidera à comprendre les autres exemples mentionnés ci-dessous dans cet article.

* * * * * CMD

Le * signifie toutes les unités possibles - c'est-à-dire chaque minute de chaque heure tout au long de l'année. Plus que d'utiliser ce * directement, vous le trouverez très utile dans les cas suivants.

  • Lorsque vous spécifiez */5 dans le champ des minutes, cela signifie toutes les 5 minutes.
  • Lorsque vous spécifiez 0-10/2 dans le champ des minutes, cela signifie toutes les 2 minutes au cours des 10 premières minutes.
  • Ainsi, la convention ci-dessus peut être utilisée pour les 4 autres champs.

7. Planifiez une tâche Cron en arrière-plan toutes les 10 minutes.

Utilisez ce qui suit si vous souhaitez vérifier l'espace disque toutes les 10 minutes.

*/10 * * * * /home/ramesh/check-disk-space

Il exécute la commande spécifiée check-disk-space toutes les 10 minutes tout au long de l'année. Mais vous devrez peut-être exécuter la commande uniquement pendant les heures de bureau ou vice versa. Les exemples ci-dessus montrent comment faire ces choses.

Au lieu de spécifier des valeurs dans les 5 champs, nous pouvons le spécifier en utilisant un seul mot-clé comme mentionné ci-dessous.

Il existe des cas particuliers dans lesquels au lieu des 5 champs ci-dessus, vous pouvez utiliser @ suivi d'un mot-clé, comme redémarrage, minuit, annuel, horaire.

Table :Mots-clés spéciaux Cron et leur signification
Mot clé Équivalent
@annuel 0 0 1 1 *
@quotidien 0 0 * * *
@horaire 0 * * * *
@reboot Exécuter au démarrage.

8. Planifiez une tâche pour la première minute de chaque année en utilisant @yearly

Si vous souhaitez qu'un travail soit exécuté à la première minute de chaque année, vous pouvez utiliser le @yearly cron comme indiqué ci-dessous.

Cela exécutera la maintenance annuelle du système à l'aide du script shell de maintenance annuelle à 00h00 le 1er janvier de chaque année.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. Planifiez une tâche Cron au début de chaque mois en utilisant @monthly

Il est aussi similaire que le @yearly comme ci-dessus. Mais exécute la commande une fois par mois en utilisant @monthly mot-clé cron.

Cela exécutera la sauvegarde sur bande du script shell à 00h00 le 1er de chaque mois.

@monthly /home/ramesh/suse/bin/tape-backup

10. Planifiez une tâche en arrière-plan tous les jours en utilisant @daily

Utiliser le @quotidien cron, cela effectuera un nettoyage quotidien du fichier journal à l'aide du script shell cleanup-logs à 00h00 tous les jours.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. Comment exécuter une commande Linux après chaque redémarrage à l'aide de @reboot ?

Utilisation de @reboot cron, cela exécutera la commande spécifiée une fois après le démarrage de la machine à chaque fois.

@reboot CMD

12. Comment désactiver/rediriger la sortie du courrier Crontab à l'aide du mot-clé MAIL ?

Par défaut, crontab envoie la sortie du travail à l'utilisateur qui a planifié le travail. Si vous souhaitez rediriger la sortie vers un utilisateur spécifique, ajoutez ou mettez à jour la variable MAIL dans la crontab comme indiqué ci-dessous.

ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: Crontab of the current logged in user with MAIL variable]


Si vous souhaitez que le courrier ne soit envoyé nulle part, c'est-à-dire pour que la sortie de la crontab ne soit pas envoyée par e-mail, ajoutez ou mettez à jour la variable MAIL dans la crontab comme indiqué ci-dessous.

MAIL=""

13. Comment exécuter une tâche Linux Cron chaque seconde à l'aide de Crontab.

Vous ne pouvez pas planifier une tâche cron toutes les secondes. Parce que dans cron, l'unité minimale que vous pouvez spécifier est la minute. Dans un scénario typique, il n'y a aucune raison pour la plupart d'entre nous d'exécuter une tâche chaque seconde dans le système.

14. Spécifiez la variable PATH dans la Crontab

Dans tous les exemples ci-dessus, nous avons spécifié le chemin absolu de la commande Linux ou du script shell qui doit être exécuté.

Par exemple, au lieu de spécifier /home/ramesh/tape-backup, si vous souhaitez simplement spécifier tape-backup, ajoutez le chemin /home/ramesh à la variable PATH dans la crontab, comme indiqué ci-dessous.

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

[Note: Crontab of the current logged in user with PATH variable]

15. Installer Crontab à partir d'un fichier Cron

Au lieu de modifier directement le fichier crontab, vous pouvez également ajouter d'abord toutes les entrées à un fichier cron. Une fois que vous avez toutes ces entrées dans le fichier, vous pouvez les télécharger ou les installer sur le cron comme indiqué ci-dessous.

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

Remarque : Cela installera le fichier cron-file.txt sur votre crontab, ce qui supprimera également vos anciennes entrées cron. Soyez donc prudent lorsque vous téléchargez des entrées cron à partir d'un fichier cron-file.txt.

Didacticiels Cron supplémentaires

  • Cron Vs Anacron :Comment configurer Anacron sous Linux (avec un exemple)
  • Comment exécuter Cron toutes les 5 minutes, secondes, heures, jours, mois
  • 6 exemples de commandes Linux Crontab
  • Comment installer, modifier ou supprimer des tâches Cron en mode batch
  • Comprendre les commandes at, atq, atrm, batch à l'aide de 9 exemples

Des articles Linux géniaux

Voici quelques exemples impressionnants de 15 articles qui pourraient vous être utiles.

  • Maman, je l'ai trouvé ! - 15 exemples pratiques de commande de recherche Linux
  • 15 exemples pour maîtriser l'historique de la ligne de commande Linux
  • Commande LS Unix :15 exemples pratiques
  • Maîtrisez le Grep ! – 15 exemples pratiques de commandes Grep

Linux
  1. 4 alternatives à cron sous Linux

  2. 6 Exemples de commandes Linux Crontab

  3. 7 Exemples de commandes Linux df

  4. 8 Exemples de commandes Linux TR

  5. Linux :exécuter la tâche cron au premier plan

10 exemples de commandes Awk impressionnants sous Linux

Cron Jobs et Crontab sur Linux expliqués

Comprendre Crontab sous Linux avec des exemples

Qu'est-ce qu'un travail Cron sous Linux

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

Exemples de commandes id sous Linux