Faire en sorte que les choses se produisent selon un calendrier régulier et prévisible est important sur les ordinateurs. C'est important car, en tant qu'êtres humains, nous pouvons parfois avoir du mal à nous rappeler de faire les choses de manière fiable parce que nous sommes distraits, que nous avons trop de choses en tête ou que nous sommes en vacances. Les ordinateurs sont vraiment doués pour faire les choses selon un calendrier, mais un humain doit programmer l'ordinateur avant que l'ordinateur n'agisse.
D'une certaine manière, le cron
system est une introduction facile et rudimentaire à la programmation. Vous pouvez faire en sorte que votre ordinateur fasse ce que vous voulez qu'il fasse simplement en éditant un fichier. Vous n'avez même pas besoin de savoir où le fichier est conservé. Vous n'avez qu'à taper une simple commande, entrer la "recette" que vous voulez que votre ordinateur suive et enregistrer votre travail. A partir de là, votre ordinateur exécute vos instructions à l'heure indiquée jusqu'à ce qu'on lui dise de s'arrêter.
De par sa conception, cron
n'est pas un système complexe. Voici ce que vous devez savoir à ce sujet.
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Qu'est-ce que cron ?
Le cron
La commande est si omniprésente sous Linux et Unix, et elle a été imitée et réinventée si souvent que c'est presque un terme générique pour quelque chose qui se produit selon un calendrier . C'est une forme d'automatisation, et bien qu'il existe différentes implémentations (cron de Dillon, cron de Vixie, chrony et autres), et des variantes comme anacron
et les minuteurs systemd, la syntaxe et le flux de travail sont restés essentiellement les mêmes pendant des décennies.
Cron fonctionne sur un système "spool", un peu comme les imprimantes et le courrier électronique. Si vous ne saviez pas que les imprimantes et les e-mails utilisent un spool, ce n'est pas grave car le but d'un fichier spool est que vous n'êtes pas censé y penser beaucoup. Sur un système Linux, le répertoire /var/spool
est conçu comme un hub central pour les fichiers importants mais de bas niveau avec lesquels l'utilisateur n'est pas censé interagir directement. Un des spools gérés dans /var/spool
est cron
tables ou "crontab" pour faire court. Chaque utilisateur, y compris vous-même, sur un système Linux a une crontab. Les utilisateurs peuvent modifier, afficher et supprimer leur propre crontab. De plus, les utilisateurs peuvent utiliser leur crontab pour planifier des tâches. Le cron
le système lui-même surveille les crontabs et s'assure que toute tâche répertoriée dans une crontab est exécutée à l'heure spécifiée.
Modifier les paramètres cron
Vous pouvez modifier votre crontab en utilisant le crontab
commande avec le -e
(pour modifier ) option. Par défaut, la plupart des systèmes appellent le vim
éditeur de texte. Si, comme moi, vous n'utilisez pas Vim, vous pouvez définir un éditeur différent pour vous-même dans votre ~/.bashrc
dossier. J'ai mis le mien sur Emacs, mais vous pouvez aussi essayer Nano, Kate ou n'importe quel éditeur préféré. L'EDITEUR La variable d'environnement définit l'éditeur de texte que vous utilisez dans votre terminal, tandis que la variable VISUAL variable définit quel éditeur vous utilisez en mode graphique :
export EDITOR=nano
export VISUAL=kate
Actualisez votre session shell avec vos nouveaux paramètres :
$ source ~/.bashrc
Vous pouvez maintenant modifier votre crontab avec votre éditeur préféré :
$ crontab -e
Planifier une tâche
Le cron
est essentiellement un système de calendrier. Vous pouvez dire à cron
la fréquence d'exécution d'une tâche à l'aide de cinq attributs différents :minute, heure, date, mois, jour de la semaine. L'ordre de ces attributs est strict et pas nécessairement intuitif, mais vous pouvez les considérer comme des filtres ou des masques. Par défaut, vous pourriez penser que tout est défini sur toujours ou tous . Cette entrée exécuterait touch /tmp/hello
en haut de chaque minute pendant chaque heure de chaque jour toute l'année :
* * * * * touch /tmp/hello
Vous pouvez limiter cette planification globale en définissant des définitions spécifiques pour chaque attribut. Pour que la tâche s'exécute sur la demi-heure de chaque heure, définissez les minutes sur 30 :
30 * * * * touch /tmp/hello
Vous pouvez encore contraindre cette instruction avec une heure spécifique. Cette tâche s'exécute à 3 h 30 tous les matins :
30 3 * * * touch /tmp/hello
Vous pouvez également exécuter la tâche uniquement le premier de chaque mois :
30 3 1 * * touch /tmp/hello
Vous pouvez définir un mois en utilisant 1 pour janvier jusqu'à 12 pour décembre, et vous pouvez définir un jour en utilisant 0 pour dimanche jusqu'à 6 pour samedi. Cette tâche s'exécute à 3h15 pendant le mois d'avril, uniquement les lundis :
15 3 * 4 1 touch /tmp/hello
Définir les incréments
Tous ces paramètres correspondent à une valeur exactement . Vous pouvez également utiliser cron
notation pour exécuter des tâches après un intervalle de temps défini. Par exemple, vous pouvez exécuter une tâche toutes les 15 minutes :
*/15 * * * * touch /tmp/hello
Vous pouvez exécuter une tâche à 10 h 00 tous les trois jours :
* 10 */3 * * touch /tmp/hello
Vous pouvez exécuter une tâche toutes les six heures :
* */6 * * * touch /tmp/hello
Raccourci Cron
cron
moderne les implémentations ont ajouté un raccourci pratique pour les horaires communs. Ce sont :
@hourly
@daily
@weekly
@monthly
@yearly or @annually
Répertorier les tâches cron
Utilisation de la crontab
commande, vous pouvez voir une liste de vos cron
planifiés emplois :
$ crontab -l
15 3 * 4 1 touch /tmp/hello
Supprimer une crontab
Lorsque vous avez terminé avec un crontab, vous pouvez le supprimer avec le -r
choix :
$ crontab -r -i
Le -i
option signifie interactif . Il vous demande confirmation avant de supprimer le fichier.
Ce que cron peut faire
C'est une chose de savoir utiliser cron
, mais c'est une autre chose de savoir à quoi ça sert. Le cas d'utilisation classique est un bon plan de sauvegarde. Si votre ordinateur est allumé presque toute la journée ou toute la journée et toute la nuit, vous pouvez planifier une sauvegarde de routine d'une partition importante. J'exécute une application de sauvegarde appelée rdiff-backup
sur ma partition de données principale tous les jours à 3h :
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
Une autre utilisation courante est la maintenance du système. Sur mon bureau Slackware, je mets à jour mon catalogue de dépôt local tous les vendredis après-midi :
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
Je pourrais également exécuter un script Ansible à 15h00 tous les trois jours pour ranger mon dossier Téléchargements :
$ crontab -l | grep ansible
* 15 */3 * * ansible-playbook /home/seth/Ansible/cleanup.yaml
Un petit investissement dans la santé de votre environnement informatique est très utile. Il existe des scripts de déduplication, la taille du fichier et /tmp
des moniteurs de répertoires, des redimensionneurs de photos, des déménageurs de fichiers et de nombreuses autres tâches subalternes que vous pouvez programmer pour qu'elles s'exécutent en arrière-plan afin de garder votre système épuré. Avec cron
, votre ordinateur peut prendre soin de lui-même d'une manière que j'aimerais que mon appartement physique puisse faire.
Mémoriser les paramètres cron
En plus de trouver pourquoi vous avez besoin de cron
, la chose la plus difficile à propos de cron
d'après mon expérience, je me souviens de sa syntaxe. Répétez-vous ceci, encore et encore jusqu'à ce que vous l'ayez mémorisé :
Minutes, heures, date, mois, jour de la semaine.
Minutes, heures, date, mois, jour de la semaine.
Minutes, heures, date, mois, jour de la semaine.
Mieux encore, téléchargez notre aide-mémoire gratuit pour avoir la clé à portée de main lorsque vous en avez le plus besoin !