web-dev-qa-db-fra.com

Un seul travail cron non exécuté

J'ai une liste de tâches cron.

00 21 * * * sh ~/db_backup.sh

20 21 * * * sh ~/update.sh

* 5 1 * *  sh ~/db_vacuum.sh

Le premier travail crée une sauvegarde de la base de données que j’exécute sur un serveur Ubuntu. Cela fonctionne car je vérifie la date à laquelle le fichier de sauvegarde a été modifié pour la dernière fois à l’aide de:

date -r db.sql

Mon troisième travail cron aspire juste ma db au début de chaque mois. Mon problème est dans mon deuxième travail. Ce travail exécute plusieurs rappels d’URL sur une application Django que j’exécute:

Sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command1"
Sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command2"
Sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command3"
Sudo docker exec -it web_1 wget -t 0 "http://127.0.0.1:8080/admin/command4"

Je vérifie les résultats attendus et il semble que le fichier n’a pas été exécuté du tout. Ce qui est étrange, c’est que si je l’exécute manuellement avec la commande:

sh ~/update.sh

Il fonctionne parfaitement, y a-t-il des prises avec les gadgets qui me manquent? Si cela n’est pas évident, les commandes wget pointent vers un conteneur Docker exécutant le serveur.

PDATE:

J'ai essayé de joindre des fichiers journaux en tant que fichiers de sortie aux commandes wget de mon fichier .sh. Après avoir vérifié après l'heure d'exécution établie du travail cron, il n'y avait aucun fichier journal dans le répertoire.

J'ai ensuite vérifié les journaux du système et j'ai remarqué que ce message était apparu dans le journal la seconde après l'exécution de mon fichier .sh.

(CRON) info (No MTA installed, discarding output)

Cela pourrait-il être lié d'une manière ou d'une autre?

7
GreenGodot

Votre problème utilise Sudo dans votre script. Cron peut jamais entrer votre mot de passe Sudo.

3
Елин Й.

Je remarque que vous utilisez sh pour invoquer le travail cron, mais sh est un sous-ensemble de bash et risque de ne pas pouvoir exécuter votre travail cron. De plus, exécuter la tâche manuellement n’est pas nécessairement identique à l’exécuter par cron. S'il vous plaît, changez sh en bash dans le cronjob et voyez ce qui se passe.

Le message d'erreur relatif au MTA que vous voyez dans le fichier journal signifie qu'aucun agent de transfert de courrier n'est installé, ce qui signifie qu'aucun logiciel n'est installé pour envoyer des messages. Cron essaie d'envoyer des messages électroniques pour vous informer de quelque chose. Ce pourrait être un message d'erreur à propos de la tâche manquante.

2
wie5Ooma