Comment utiliser Crontab pour automatiser les tâches répétitives sous Linux

Profitez de la commande crontab Linux pour automatiser diverses tâches banales et répétitives, vous simplifiant ainsi la vie. Cet excellent outil facile à utiliser, combiné à des scripts, peut non seulement automatiser toutes sortes de tâches, mais aussi aider à éviter de simples erreurs humaines ou des oublis.

Ici, vous apprendrez ce qu'est crontab, comment ajouter des tâches automatisées et des exemples concrets.

Qu'est-ce que Crontab?

Crontab est un processus démon qui s'exécute en arrière-plan sur presque toutes les machines Linux, et est utilisé pour planifier et exécuter des tâches automatisées à des intervalles de temps définis. Il est également souvent utilisé par les développeurs de logiciels pour exécuter des tâches chronophages en arrière-plan.

Cela peut être n'importe quoi, y compris, mais sans s'y limiter, l'envoi d'e-mails par lots, la vérification de votre flux Twitter, l'exécution de sauvegardes ou simplement l'exécution d'un rappel.

Commandes de base de Crontab

Chaque utilisateur Linux sur la machine a son propre fichier crontab, qui contient ses tâches crontab actives. Voici quelques commandes de terminal de base que vous utiliserez pour afficher et modifier le fichier crontab:

  • crontab-l — Liste toutes les tâches crontab.
  • crontab -e — Edite le fichier crontab.
  • crontab -r — Supprime toutes les entrées du fichier crontab.

Les commandes ci-dessus seront pour le fichier crontab de l'utilisateur actuel . Si vous devez modifier le fichier crontab d'un autre utilisateur, utilisez simplement l'option -u . Par exemple, vous pouvez modifier le fichier crontab de l'utilisateur jdoe avec la commande:

 sudo crontab -ujdoe -e

Format des travaux Crontab

Chaque tâche crontab se compose d'une ligne et est formatée comme ci-dessous:

 MINUTE HOUR DAY MONTH WEEKDAY COMMAND

Le tableau ci-dessous explique les différents éléments du travail crontab:

Élément Ranage La description
Minute 0 – 59 La minute à laquelle exécuter le travail crontab.
Heure 0 – 23 Heure d'exécution du travail crontab à.
journée 1 – 31 Le jour du mois auquel le travail crontab doit être exécuté.
Mois 1 – 12 Le mois pour exécuter le travail crontab à.
Jour de la semaine 0 – 6 Le jour de la semaine pour exécuter le travail crontab.
Commander Toute commande Linux que vous pouvez exécuter sur le terminal.

Vous pouvez utiliser un astérisque (*) dans n'importe lequel des champs pour désigner un caractère générique, ce qui signifie que le travail crontab s'exécutera indépendamment de cette période. Par exemple, la tâche crontab ci-dessous s'exécutera chaque nuit à exactement 3 h 20:

 20 3 * * * /root/backup.sh

Valeurs multiples

Chaque période de temps peut également inclure plusieurs éléments. Vous pouvez spécifier les valeurs exactes en les séparant par une virgule, et le travail crontab ci-dessous s'exécutera toutes les heures à 20 et 50 minutes après l'heure:

 20,50 * * * * /path/to/command.sh

Cependant, si vous souhaitez exécuter la tâche crontab à des intervalles spécifiques dans une période donnée, vous pouvez utiliser * / PERIOD , et la tâche crontab ci-dessous s'exécutera automatiquement 15 minutes après l'heure toutes les trois heures:

 15 */3 * * * /path/to/command.sh

Garder les emplois Crontab silencieux

Tout dépendant, vous voudrez peut-être éliminer toutes les sorties des tâches crontab afin qu'elles ne se retrouvent pas dans le dossier de messagerie de votre système. Vous pouvez le faire en ajoutant > / dev / null 2> & 1 à n'importe quel travail crontab. Par exemple:

 0 6 15 * * /path/to/backup.sh > /dev/null 2>&1

Ajout de travaux Crontab

En général, la méthode la plus utilisée pour ajouter ou modifier des tâches crontab est la commande crontab -e . Exécutez cette commande dans le terminal:

 crontab -e

Cela ouvrira un éditeur de texte tel que nano avec le contenu de votre fichier crontab. Chaque tâche crontab réside sur une seule ligne et vous pouvez ajouter, modifier et supprimer des lignes comme vous le souhaitez. Une fois terminé, enregistrez et fermez le fichier en appuyant sur Ctrl + W , puis sur les touches Y et Entrée , ce qui activera immédiatement toutes les tâches crontab dans le fichier.

Raccourci pour ajouter des travaux

Au lieu de modifier manuellement le fichier crontab, il existe une simple commande rapide que vous pouvez exécuter pour ajouter une tâche. Par exemple, si vous souhaitez ajouter cette tâche crontab qui s'exécute tous les dimanches à 14h00:

 0 14 * * 0 /path/to/command.sh

Vous pouvez ajouter le travail à votre fichier crontab avec la commande unique:

 (crontab -l; echo "0 14 * * 0 /path/to/command.sh";) | crontab

La commande ci-dessus répertorie simplement tous les travaux actuellement dans votre fichier crontab, imprime le nouveau travail et transfère tout dans crontab en remplaçant son contenu.

Liste / suppression du fichier Crontab

Vous pouvez lister tous les jobs actuellement actifs dans votre fichier crontab avec la commande:

 crontab -l

Vous pouvez également supprimer toutes les tâches crontab et vider le contenu de votre fichier crontab avec la commande:

 crontab -r

Exemple: Jouez des sons!

Besoin d'un rappel rapide toutes les deux heures pendant que vous travaillez pour vous faire savoir que le temps est écoulé? Prenez votre clip audio préféré dans presque tous les formats (.wav, .mp4, n'importe quoi), et s'il est enregistré dans (par exemple) /home/myuser/myalert.wav, faites -le jouer automatiquement avec le travail crontab:

 0 */2 * * * aplay /home/myuser/myalert.wav

Que diriez-vous de vous donner un bel envoi du travail de la semaine avec votre chanson préférée jouée automatiquement à 17h00 tous les vendredis après-midi? Prenez votre clip de chanson préféré, et s'il est enregistré dans /home/myuser/friday_song.mp4, vous ajouterez le travail crontab:

 0 17 * * 5 aplay /home/myuser/friday_song.mp4

Exemple: sauvegarde de fichiers avec Rsync

L'une des nombreuses excellentes utilisations de crontab est la possibilité de sauvegarder automatiquement vos fichiers sur un serveur distant. Réduisez considérablement votre risque de perdre à nouveau des données importantes avec cet excellent didacticiel rsync .

Exemple: vérifier si les sites sont en ligne

Vous souhaitez peut-être vérifier automatiquement toutes les cinq minutes si différents sites sont en ligne ou non, et être averti par e-mail s'il y en a. Voici un petit script PHP astucieux qui fera exactement cela.

 
<?php
// E-mail address to notify of sites down
$email = '[email protected]';
// Define URLs to check
$urls = [
'https://apexpl.io',
'https://google.com',
'https://some-junk-site-that-will-hopefully-never-exist.com'
];
// Go through URLs
$down = [];
foreach ($urls as $url) {
// Check URL
$status = check_url($url);
if ($status != 200) {
$down[] = $url;
}
}
// Send e-mail if we have down sites
if (count($down) > 0) {
mail($email, "Urgent - Sites Down!", "Your bot has detected the following sites are currently down:
" . implode("
", $down));
}
// Exit
exit(0);

/**
* Check URL
*/
function check_url(string $url):int
{
// Send via cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
// Get status, and close connection
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Return
return $status;
}

Modifiez simplement l'adresse e-mail et les URL souhaitées à vérifier en haut du fichier, et enregistrez-le quelque part comme /home/myuser/check_sites.php . Pour que ce script s'exécute toutes les cinq minutes et vous avertisse par e-mail de tout site en panne, ajoutez le travail crontab:

 */5 * * * * /usr/bin/php /home/myuser/check_sites.php > /dev/null 2>&1

Automatisez votre vie!

Avec cet article, vous aurez, espérons-le, compris la puissance d'automatisation de crontab et comment il peut être utilisé pour automatiser de nombreuses tâches banales et répétitives de votre vie.

Vous avez appris ce qu'est crontab, le fichier crontab, la manière dont les tâches crontab sont formatées et quelques exemples concrets de la façon dont il peut être utilisé.