07/11/2020Quelques 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.
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) :
- Enregistrez votre fichier, quittez-le puis ouvrez le planificateur de tâches :
- 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 :
Dernière modification le 07/11/2020 - Quillevere.net