Cron Jobs : Pour Quand Ton Emploi Du Temps De Sommeil Compte

Publié : par Matt Stamp
Cron Jobs : Pour Quand Ton Emploi Du Temps De Sommeil Compte thumbnail

Veux-tu te réveiller à 2 heures du matin, vider les logs, nettoyer les fichiers temporaires et exécuter les mêmes tâches de maintenance serveur chaque jour ?

Moi non plus. Ni les millions d’administrateurs de serveurs qui gèrent les 14+ milliards de serveurs à travers le monde.

Alors, arrête cette folie — je t’en supplie !

Les Cron Job sont conçus pour cela.

Parce que, sincèrement, rien ne dit “administrateur système compétent” comme être profondément endormi et prendre le crédit pour le travail que tes scripts gèrent pour toi. Cela s’appelle « utiliser tes ressources. »

Avec des Cron Job :

  • Ton patron pense que tu es dévoué. 
  • Ton serveur sait que tu es paresseux. 
  • Tu as cette belle relation symbiotique appelée automatisation. 

Aujourd’hui, tu vas devenir un pro des Cron Job.

D’abord, Qu’est-Ce Qu’un Cron Job ? (La Version Pas Ennuyeuse)

Un Cron Job est essentiellement un planificateur de tâches intégré aux systèmes d’exploitation de type Unix (Linux, macOS) qui te permet d’exécuter commandes Linux automatiquement à des moments et dates spécifiés.

Considère-le comme une liste de tâches pour ton serveur, mais… celle-ci est réellement accomplie.

Cron en Métaphores

Si ton infrastructure serveur était un restaurant :

  • Le cron daemon est le gestionnaire qui vérifie le programme quotidien.
  • Le crontab est le tableau d’attribution du personnel.
  • Chaque Cron Job est une tâche assignée à un membre du personnel spécifique à un moment précis.
  • La commande est le travail réellement effectué.

Lorsque l’horloge indique l’heure prévue, le responsable tape sur l’épaule de l’employé assigné et dit : “C’est l’heure du spectacle !”

L’employé exécute ensuite sa tâche sans question ni plainte.

Si seulement nous, les humains, étions aussi fiables, le monde serait un endroit différent !

L’Anatomie D’un Cron Job

Chaque Cron Job se compose de deux parties principales :

  1. Quand exécuter (le programme)
  2. Quoi exécuter (la commande ou le script à exécuter)

Le programme utilise une syntaxe spécifique qui peut sembler être de la magie informatique à première vue :

Mais regarde de plus près et cela commencera à avoir du sens.

Chaque astérisque peut être remplacé par des valeurs spécifiques, des plages ou des intervalles pour créer précisément l’horaire dont tu as besoin.

Pourquoi Les Administrateurs Serveur Adorent Les Cron Jobs

Il y a une raison pour laquelle les administrateurs de serveurs (moi y compris) ont les yeux embués lorsqu’ils parlent de Cron Jobs.

Ils transforment la gestion de serveur en quelque chose qui ressemble (au moins vaguement) à un équilibre entre vie professionnelle et vie privée.

1. Ils Te Font Gagner Du Temps

Rappelle-toi le temps ? Cette chose que tu n’as jamais en assez ? Les Cron Jobs te le rendent. Tu les programmes, tu les oublies, et tu ne les regardes pratiquement jamais.

(Eh bien, jusqu’à ce qu’ils cassent ou que tu aies besoin de changer le programme.)

2. Ils Maintiennent La Cohérence

Les humains sont inconstants. Nous oublions des choses. Nous faisons des fautes de frappe. Nous nous laissons distraire par des vidéos de chats. Les Cron Jobs effectuent la tâche exacte, de la même manière, à chaque fois — sans exception.

3. Ton Serveur Ne Dort Jamais

Avec les Cron Job, la maintenance essentielle a lieu 24/7/365, que tu sois réveillé, endormi ou sur une plage en train de siroter des margaritas.

4. Logs d’erreurs > Mémoire Humaine

Lorsque tu effectues des tâches manuellement, peux-tu te souvenir exactement de ce que tu as fait et exactement quand tu l’as fait ? Probablement pas.

Mais les Cron Job peuvent être configurés pour enregistrer leurs activités, créant ainsi un historique de toutes les actions automatisées pour le dépannage et la vérification.

5. Ils Sont Conçus Pour L’évolutivité

À mesure que ton infrastructure grandit, la gestion manuelle de tout devient exponentiellement plus difficile. Les Cron Jobs s’échelonnent sans effort.

Cela signifie que le même travail peut être exécuté sur plusieurs serveurs sans nécessiter de temps supplémentaire de ta part.

Recevez du contenu directement dans votre boîte de réception

Abonnez-vous maintenant pour recevoir toutes les dernières mises à jour directement dans votre boîte de réception.

Configuration Des Cron Jobs : Un Guide Étape Par Étape

Assez de théorie ! Tu dois mettre les mains dans le cambouis avec la configuration pratique d’un Cron Job.

Étape 1 : Confirmer l’installation de Cron

La plupart des systèmes semblables à Unix ont Cron pré-installé. Pour vérifier s’il est disponible à l’utilisation, tape ce commande ci-dessous :

crontab -e

Selon l’éditeur par défaut, la commande ouvrira le crontab dans ton éditeur spécifique. Si tu n’as jamais utilisé crontab auparavant, il pourra te demander de définir l’éditeur par défaut.

Si le terminal répond par commande introuvable, tu devras installer cron avec les commandes ci-dessous :

  • Sur Ubuntu/Debian : sudo apt update && sudo apt install cron
  • Sur CentOS/RHEL : sudo yum install cronie

Une fois terminé, démarre et active le service Cron:

sudo systemctl start cron
sudo systemctl enable cron

Avec les commandes start et enable , nous démarrons le service cron pour exécuter les Cron Job.

Et avec activer, nous nous assurons que même si ton serveur redémarre, le service Cron redémarre automatiquement avec lui, et aucun Cron Job n’est manqué.

Note de Nerd : CentOS nomme le service Cron “crond”, donc tu devras démarrer et activer le service crond.

Étape 2 : Comprendre le Crontab

D’accord, ouvre le crontab ou la table des Cron Jobs pour commencer à ajouter tes tâches planifiées.

Chaque utilisateur sur le système peut avoir son propre fichier Cron Job. De plus, il existe un Cron Job à l’échelle du système.

Pour éditer ton Cron Job personnel :

crontab -e

Cela ouvre ton fichier Cron Job dans ton éditeur de texte par défaut. Si c’est ta première fois, choisis l’éditeur nano (option 1) car il est le plus simple pour les débutants.

Pour les crontabs à l’échelle du système, exécute la commande ci-dessous avec les privilèges sudo:

sudo nano /etc/crontab

Étape 3 : Syntaxe Du Cron Job

Nous avons déjà parlé de la structure de base dans l’anatomie des Cron Job auparavant.

Mais créer un Cron Job peut être parfois déroutant. Crontab.guru t’aide à visualiser les horaires des tâches au fur et à mesure que tu les saisis.

Maintenant, passons à la partie amusante — écrire notre premier Cron Job. Examinons quelques horaires communs de Cron Job :

Toutes les minutes :

* * * * /path/to/command

Toutes les heures à la minute 0 :

0 * * * * /path/to/command

Tous les jours à minuit :

0 0 * * * /path/to/command

Tous les lundis à 3 heures du matin :

0 3 * * 1 /path/to/command

Toutes les 15 minutes :

*/15 * * * * /path/to/command

Premier jour de chaque mois à 6h30 :

30 6 1 * * /chemin/vers/commande

Étape 4 : Création de Ton Premier Cron Job

Passons à la création d’un Cron Job de sauvegarde simple pour ton serveur.

La tâche ci-dessous crée une sauvegarde de ton site web tous les jours à 2 heures du matin.

0 2 * * * tar -czf /path/to/backup/website-backup-$(date +%Y%m%d).tar.gz /path/to/your/website

Il générera une archive tar compressée de ton répertoire de site web avec la date actuelle comme nom de fichier.

Étape 5 : Sauvegarder et Vérifier

Maintenant, quitte l’éditeur. Dans nano, appuie sur Ctrl+X puis sur Y.

Pour consulter ta crontab actuelle et vérifier que ton Cron Job a été ajouté :

crontab -l

C’est fait ! Ton premier Cron Job est maintenant configuré et s’exécutera automatiquement à l’heure prévue.

Exemples Pratiques de Cron Job pour les Gestionnaires de Site Web

Maintenant que tu connais les bases, explorons quelques Cron Jobs pratiques qui peuvent te faciliter la vie en tant que gestionnaire de site web.

Sauvegardes De Base De Données

Sauvegarde de la base de données MySQL (quotidienne à 1h du matin) :

0 1 * * * mysqldump -u username -p'password' database_name | gzip > /path/to/backups/db-backup-$(date +%Y%m%d).sql.gz

Rotation Et Nettoyage Des Logs

Nettoyer les logs de plus de 7 jours (hebdomadairement le dimanche) :

0 0 * * 0 find /path/to/logs -type f -name "*.log" -mtime +7 -delete

Surveillance Des Performances Du Site Web

Vérifie chaque 5 minutes le temps de réponse du site web :

*/5 * * * * curl -o /dev/null -s -w "%{http_code} %{time_total}sn" example.com >> /path/to/logs/website-performance.log

Mises À Jour De Contenu

Récupérer et mettre à jour le contenu dynamique (toutes les heures) :

0 * * * * /path/to/content-update-script.sh

Rapports Email

Envoie un résumé hebdomadaire du trafic tous les lundis à 9 heures :

0 9 * * 1 /path/to/generate-and-email-report.sh

Analyses De Sécurité

Exécute un script de scan de sécurité chaque nuit à 3 heures du matin :

0 3 * * * /path/to/security-scan.sh

Bonnes Pratiques Pour Cron Job : À Faire Et À Ne Pas Faire

Pour t’assurer que tes Cron Jobs fonctionnent bien et ne causent pas plus de problèmes qu’ils n’en résolvent, voici quelques bonnes pratiques importantes.

Les Incontournables

  1. Utilise Toujours Les Chemins Complets Vers Les Commandes Et Les Fichiers : Ton environnement cron ne possède pas le même PATH que ton shell utilisateur, donc “/usr/bin/python” est préférable à python seul.
  2. Redirige La Sortie Pour Éviter Le Spam Par Email : Par défaut, cron envoie toute sortie vers l’utilisateur. Ajoute >/dev/null 2>&1 pour supprimer la sortie ou la rediriger vers un fichier journal à la place.
  3. Teste Tes Commandes Avant De Les Planifier : Exécute ta commande manuellement pour t’assurer qu’elle fonctionne comme prévu.

Ajoute des commentaires pour expliquer chaque tâche — Le toi futur remerciera le toi présent pour avoir documenté ce que chaque Cron Job fait et pourquoi.

Sauvegarde quotidienne de la base de données - Ajoutée par Jane le 2023-05-15
0 1 * * * /chemin/vers/le-script-de-sauvegarde.sh

Envisage d’utiliser des fichiers de verrouillage pour les tâches de longue durée afin d’empêcher le démarrage d’une nouvelle instance si la précédente est encore en cours.

0 * * * * flock -n /tmp/script.lock /path/to/your/script.sh

Les Interdits

  1. Ne planifie pas de tâches gourmandes en ressources pendant les heures de pointe : Ta sauvegarde n’a pas besoin d’être exécutée à midi, quand ton site est le plus fréquenté.
  2. Ne pas utiliser de chemins relatifs : “./script.sh” échouera presque certainement dans le crontab.
  3. N’oublie pas les variables d’environnement : Le Cron Job ne charge pas ton .bashrc ou ton .profile. Définis toutes les variables nécessaires dans le crontab ou le script.
  4. Ne néglige pas la journalisation : Sans une bonne journalisation, le débogage des tâches Cron Job peut être un cauchemar.
  5. Ne pas en faire trop : Trop de tâches Cron Job fréquentes peuvent surcharger ton serveur. Sois stratégique.

Que Faire Lorsque Les Cron Jobs Ne Fonctionnent Pas

La seule fois où tu dois revenir sur un Cron Job, c’est lorsqu’il échoue — et lorsqu’il échoue, voici comment diagnostiquer et résoudre les problèmes courants.

Problème Courant #1 : Le Job Ne S’exécute Pas

Symptômes : Ta tâche planifiée ne semble pas s’exécuter du tout.

Possibles solutions :

  • Vérifie que le démon cron est en marche : Le statut “systemctl” de cron
  • Vérifie la syntaxe de ton crontab : Utilise un outil comme crontab.guru
  • Assure-toi des chemins complets vers les exécutables : Quelle commande pour trouver les chemins complets
  • Vérifie les permissions des fichiers : Les scripts doivent être exécutables (chmod +x script.sh)

Problème Courant #2 : Le Job S’exécute Mais Échoue

Symptômes : Le job s’exécute mais ne termine pas sa tâche avec succès.

Possibles solutions :

  • Redirige la sortie vers un fichier log pour voir les erreurs : * * * * /path/to/script.sh > /path/to/script.log 2>&1
  • Teste la commande manuellement avec le même environnement
  • Vérifie les dépendances qui pourraient manquer dans l’environnement Cron Job

Problème Courant #3 : Inondation D’Emails

Symptômes : Ta boîte de réception est inondée d’emails de sortie de Cron Job.

Pistes de réparation :

  • Rediriger la sortie vers null : >/dev/null 2>&1
  • Rediriger vers un fichier journal : >/path/to/logfile.log 2>&1

Seulement envoyer un email en cas d’erreurs :

* * * * /path/to/script.sh >/dev/null || echo "Échec du script" | mail -s "Échec du Cron" you@example.com

Problème Courant #4 : Problèmes De Timing

Symptômes : Les tâches s’exécutent à des moments ou à des fréquences inattendus.

Pistes de correction :

  • Vérifie le réglage de ton fuseau horaire — date par rapport aux attentes du Cron Job
  • Sois conscient des changements d’heure d’été qui pourraient affecter le timing
  • Utilise des plages horaires explicites au lieu de relatives lorsque la précision est importante

Techniques Avancées De Rédaction De Cron Job

Nous avons examiné les bases, et tu es à présent presque un pro des Cron Job. Mais cette section te fera aller un peu plus loin.

Utilisation De Chaînes Spéciales

Tu n’as pas toujours besoin d’écrire des Cron Job avec ces signes astérisques. Il existe des chaînes spéciales qui te permettent de configurer des Cron Job assez facilement.

  • @yearly ou @annually : Exécuté une fois par an (0 0 1 1 *)
  • @monthly : Exécuté une fois par mois (0 0 1 * *)
  • @weekly : Exécuté une fois par semaine (0 0 * * 0)
  • @daily ou @midnight : Exécuté une fois par jour (0 0 * * *)
  • @hourly : Exécuté une fois par heure (0 * * * *)
  • @reboot : Exécuté une fois au démarrage

Par exemple, si tu souhaites exécuter quelque chose quotidiennement, écris simplement la commande ci-dessous :

@daily /path/to/daily-backup.sh

Variables d’Environnement dans le Cron Job

Pour éviter de répéter une chaîne encore et encore dans tes tâches Cron (par exemple, un chemin spécifique, ou ton email administratif), configure des variables d’environnement au début de ton crontab. 

Tu peux ensuite réutiliser les variables comme nécessaire dans tes scripts ou commandes.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@example.com

# Ce job enverra les erreurs à admin@example.com
0 2 * * * /path/to/mailing_script.sh

Si nous utilisons la variable d’environnement MAILTO dans notre mailing_script.sh, le script enverra automatiquement un email à l’adresse email correcte.

Avec cela, changer l’email administratif nécessitera seulement de modifier la valeur de la variable MAILTO, au lieu de faire des modifications dans tous les scripts.

Exécuter Des Tâches en Tant Qu’Utilisateurs Différents

Si tu as un accès superutilisateur, tu peux modifier le crontab d’un autre utilisateur :

sudo crontab -u nom_utilisateur -e

Utilisation d’Anacron pour les machines qui ne sont pas toujours allumées

Contrairement à cron, anacron garantit que les tâches s’exécutent même si l’ordinateur était éteint pendant l’heure prévue :

sudo apt install anacron

Modifie /etc/anacrontab pour ajouter des tâches qui s’exécuteront lorsque le système sera de nouveau en ligne.

Enchaînement de Tâches Pour des Flux de Travail Complexes

Exécute des tâches en séquence :

0 1 * * * /path/to/first-script.sh && /path/to/second-script.sh

Surveillance des Cron Jobs 

Pour une gestion sérieuse du serveur, envisage des outils comme Cronitor qui fournissent une surveillance et des alertes pour tes Cron Job.

0 * * * * cronitor exec check-12345 -- /path/to/your/script.sh

Parlons Coûts

Les Cron Job ne peuvent pas exister isolément. Ils nécessitent un serveur et un service fonctionnant sur un serveur que tu dois gérer. 

Maintenant, si tu lis cet article, il est fort probable que tu possèdes un serveur pour ton site web ou ton application. 

En fait, si tu héberges avec DreamHost VPS ou tout fournisseur d’hébergement basé sur Linux, tu as déjà tout ce qu’il te faut pour commencer à automatiser la gestion de tes tâches de serveur. 

Si ce n’est pas le cas, un VPS à 10 $/mois est tout ce dont tu aurais besoin, surtout au début. 

Pour ceux qui utilisent déjà un VPS DreamHost, le processus ne pourrait être plus simple :

  1. Connecte-toi à ton serveur via SSH
  2. Exécute crontab -e pour modifier ta table de Cron Job personnelle
  3. Ajoute tes tâches planifiées
  4. Enregistre, et laisse l’automatisation commencer !

SSH

Le protocole Secure Shell (SSH) est un protocole réseau cryptographique pour exécuter des services de manière sécurisée à travers un réseau non sécurisé. Il est principalement utilisé pour l’exécution de commandes en ligne et les connexions à distance.

Lire la suite

C’est ça. L’infrastructure pour laquelle tu paies déjà devient soudainement plus précieuse, plus efficace.

Le Nouvel Autopilote De Ton Serveur

Félicitations ! 

Tu es passé du travail manuel à la magie de l’automatisation. Avec les Cron Jobs qui gèrent la maintenance routinière, les sauvegardes et la surveillance, tu peux te concentrer sur le développement de ton site web et de ton entreprise plutôt que de surveiller le serveur.

Et souviens-toi, ce sera un processus. L’automatisation deviendra plus sophistiquée au fur et à mesure que tu ajouteras de plus en plus de tâches. 

Mais pour l’instant, commence par quelques Cron Job essentiels, surveille leur performance, et élargis progressivement ton automatisation à mesure que tu te familiarises avec le processus.

Vas-y et fais cette sieste, car tu viens de te sauver une tonne de temps.

Recevez du contenu directement dans votre boîte de réception

Abonnez-vous maintenant pour recevoir toutes les dernières mises à jour directement dans votre boîte de réception.