Ich habe eine Liste von Cron-Jobs.
00 21 * * * sh ~/db_backup.sh
20 21 * * * sh ~/update.sh
* 5 1 * * sh ~/db_vacuum.sh
Der erste Job erstellt eine Sicherung einer Datenbank, die auf einem Ubuntu-Server ausgeführt wird. Dies funktioniert, wenn ich das Datum überprüfe, an dem die Sicherungsdatei zuletzt geändert wurde.
date -r db.sql
Mein dritter Cron-Job staubsaugt meine Datenbank zu Beginn eines jeden Monats. Mein Problem ist in meinem zweiten Job. Dieser Job führt mehrere URL-Rückrufe in einer von mir ausgeführten DJango-Anwendung aus:
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"
Ich überprüfe die erwarteten Ausgaben und es scheint, dass die Datei überhaupt nicht ausgeführt wurde. Das Seltsame ist, wenn ich sie manuell mit dem folgenden Befehl ausführe:
sh ~/update.sh
Es läuft einwandfrei, gibt es einen Haken bei Wgets, die mir fehlen? Falls es nicht offensichtlich ist, zeigen die wget-Befehle auf einen Docker-Container, auf dem der Server ausgeführt wird.
AKTUALISIEREN:
Ich habe versucht, Protokolldateien als Ausgabedateien an die wget-Befehle in meiner .sh-Datei anzuhängen. Nach dem erneuten Überprüfen nach der festgelegten Ausführungszeit des Cron-Jobs befanden sich keine Protokolldateien im Verzeichnis.
Ich habe dann die aktuellen Systemprotokolle überprüft und festgestellt, dass diese Meldung im Protokoll angezeigt wurde, sobald meine .sh-Datei ausgeführt wurde.
(CRON) info (No MTA installed, discarding output)
Könnte das irgendwie zusammenhängen?
/usr/bin/docker
docker
Gruppe gehört ( grep '^docker' /etc/passwd
) docker
, ist das sudo
Kennwort erforderlich . wenn docker
das erfordert sudo
Passwort und Sie nicht hinzu , docker
um NOPASSWD
in /etc/sudoers
der sudo
ist Befehl , um die Ausführung des Skripts zu stoppen.
/bin/sh
using ausgeführt werden PATH=/usr/bin:/bin
. Ich glaube, docker
ist woanders installiert.
docker
, dassudo
Passwort ist nicht erforderlich , oder?