Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Débugger une tâche CRON

07/11/2020

Quelques indications sur comment analyser un Bash qui ne s'exécute pas en CRON.

Si vous avez programmé le lancement d'un traitement depuis un CRON, il est important de vérifier que celui-ci se lance bien. Voici comment réaliser cette vérification.

Vérifiez l'exécution de la tâche dans les logs

Tout d'abord, pour vérifier qu'une tâche s'est bien lancée, vous pouvez consulter le fichier de log avec la commande ci-dessous.

nano /var/log/syslog

Puis, en allant à la fin du fichier, vous devez trouver votre tâche, avec le compte utilisateur qui l'a lancée. Les lignes concernées contiennent le mot "CRON".

La commande suivante affiche la même chose mais liste en temps réel les dernières lignes du rapport des CRON :

sudo tail -f /var/log/syslog

Redémarrez le service CRON et le service de logs

Si votre tâche n'est pas présente dans les logs, redémarrez les services avec la commande suivante :

sudo service cron restart && sudo service rsyslog restart

Et modifiez votre tâche pour voir si elle s'exécute et figure dans les logs.

Tracez chaque ligne exécutée dans un fichier de log spécifique

Si des erreurs apparaissent, voici un ensemble de commandes permettant de tracer ce qu'il se passe.

  • Ouvrez le fichier .sh lancé par votre tâche, comme dans l'exemple suivant :
    nano /usr/local/bin/matache.sh
  • Ouvrez le fichier .sh lancé par votre tâche et modifiez la 1ère ligne de votre script pour activer l'affichage des commandes, en ajoutant le paramètre "-v" (verbose) :
    #!/bin/bash -v
  • Enregistrez votre fichier, quittez-le puis ouvrez le planificateur de tâches :
    crontab -e
  • Modifiez la tâche concernée afin d'enregistrer tout ce qui se passe dans un fichier cron.log. Planifiez également une nouvelle exécution pour les prochaines minutes (ici 9h30) :
    30 9 * * * /usr/local/bin/matache.sh > /tmp/cron.log 2>&1
  • Surveillez le lancement de la tâche à l'heure prévue. La commande suivante affiche les dernières lignes du rapport des CRON :
    sudo tail -f /var/log/syslog
  • Une fois la tâche exécutée, ouvrez votre fichier cron.log afin de comprendre ce qui pose problème :
    nano /tmp/cron.log
Dernière modification le 19/11/2020 - Quillevere.net

Rechercher sur le site

rss RSS info Informations