Dans cet article, nous allons passer en revue et voir comment planifier et exécuter des tâches Linux en arrière-plan automatiquement à intervalles réguliers en utilisant la commande Crontab.
Gérer une tâche fréquente manuellement est une tâche intimidante pour les administrateurs système et de telles tâches peuvent être planifiées et exécutées automatiquement en arrière-plan sans intervention humaine en utilisant le démon cron dans un système d’exploitation Linux ou de type Unix.
Par exemple, vous pouvez automatiser la sauvegarde du système Linux, l’affectation des mises à jour et la synchronisation de fichiers, et beaucoup d’autres tâches en utilisant le démon Cron, qui permet de lancer des tâches planifiées depuis la ligne de commande ou d’utiliser des outils en ligne pour générer des jobs cron.
Cron se réveille tous les minutes et vérifie les tâches planifiées dans un format comptable – Crontab (CRON TABle) est une table où nous pouvons planifier de tels types de tâches répétitives.
Astuces : Chaque utilisateur peut avoir son propre crontab pour créer, modifier et supprimer des tâches. Par défaut, cron est activé pour les utilisateurs, cependant, nous pouvons restreindre les utilisateurs en ajoutant une entrée dans le fichier /etc/cron.deny.
Crontab dans Linux
Le fichier Crontab se compose de commandes par ligne et contient en réalité six champs, séparés soit par un espace soit par un tabulation. Les cinq premiers champs représentent l’heure de lancement des tâches et le dernier champ est pour la commande.
- Minute (les valeurs se situent entre 0-59)
- Heure (les valeurs se situent entre 0-23)
- Jour du mois (les valeurs se situent entre 1-31)
- Le mois de l’année (1-12 ou Jan-Dec, vous pouvez utiliser les trois premières lettres du nom de chaque mois, par exemple Jan ou Jun).
- Jour de la semaine (0-6 ou Dim-Sam, vous pouvez également utiliser les trois premières lettres du nom de chaque jour, par exemple Dim ou Mer).
- Commande – Le /chemin/vers/commande ou script que vous souhaitez planifier.
1. Liste des entrées Crontab
Liste ou gérez la tâche avec la commande crontab avec l’option -l
pour l’utilisateur actuel.
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. Modifier les entrées Crontab
Pour modifier l’entrée crontab, utilisez l’option -e
comme indiqué ci-dessous. L’exemple ci-dessous ouvrira les tâches planifiées dans l’éditeur VI. Effectuez les modifications nécessaires et quittez en appuyant sur les touches :wq
qui enregistrent automatiquement les paramètres.
# crontab -e
3. Liste des tâches Cron planifiées de l’utilisateur
Pour répertorier les tâches planifiées d’un utilisateur particulier appelé tecmint en utilisant les options -u
(Utilisateur) et -l
(Liste).
# crontab -u tecmint -l no crontab for tecmint
Remarque: Seul l’utilisateur root a le droit complet de voir les entrées crontab d’autres utilisateurs. Les utilisateurs normaux ne peuvent pas voir celles des autres.
4. Supprimer l’entrée Crontab
Attention: Crontab avec le paramètre -r
supprimera complètement les tâches planifiées sans confirmation de Crontab. Utilisez l’option -i
avant de supprimer la crontab de l’utilisateur.
# crontab -r
5. Demander avant de supprimer Crontab
La commande crontab avec l’option -i
demandera confirmation à l’utilisateur avant de supprimer la crontab de l’utilisateur.
# crontab -i -r crontab: really delete root's crontab?
6. Caractères spéciaux autorisés (*, -, /, ?, #)
- Astérisque (*) – Correspond à toutes les valeurs dans le champ ou à toute valeur possible.
- Hyphen(-) – Pour définir une plage.
- Slash (/) – Signifie chaque dix minutes ou incrément de plage pour le premier champ.
- La virgule (,) – Pour séparer les éléments.
7. Planification de la tâche système
A system administrator can use the predefined cron directory as shown below.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. Planifier une tâche pour une heure spécifique
Les tâches ci-dessous suppriment les fichiers et répertoires vides de /tmp à 12h30 du matin tous les jours. Vous devez mentionner le nom d’utilisateur pour exécuter la commande crontab. Dans l’exemple ci-dessous, l’utilisateur root exécute une tâche cron.
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. Chaînes spéciales pour la planification courante
Strings | Meanings |
---|---|
@reboot | The command will run when the system reboots. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use the @annually keyword also. |
Vous devez remplacer cinq champs de la commande cron par des mots-clés si vous souhaitez utiliser la même.
10. Plusieurs commandes avec double esperluette(&&)
Dans l’exemple ci-dessous, les commandes 1 et 2 s’exécutent quotidiennement.
# crontab -e @daily <command1> && <command2>
11. Désactiver les notifications par e-mail.
Par défaut, cron envoie un e-mail au compte utilisateur exécutant la tâche cron. Si vous souhaitez le désactiver, ajoutez votre tâche cron de manière similaire à l’exemple ci-dessous. Utiliser l’option >/dev/null 2>&1 à la fin du fichier redirigera toute la sortie des résultats cron vers /dev/null.
[root@tecmint ~]# crontab -e * * * * * >/dev/null 2>&1
Conclusion: L’automatisation des tâches peut nous aider à effectuer nos tâches de manière plus efficace, sans erreur. Vous pouvez vous référer à la page de manuel de crontab pour plus d’informations en tapant la commande «man crontab» dans votre terminal.
Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/