Warum funktioniert auf meiner Crontab nur ein wget-Befehl?

15

Ich möchte zweimal täglich Inhalte aus einem PHP-Skript auf meinem Server abrufen, eine Abfragevariable ändern lang, um die gewünschte Sprache festzulegen, und diese Inhalte in zwei sprachspezifischen Dateien speichern. Das ist meine Crontab:

*/15 * * * * ~root/apache.sh > /var/log/checkapache.log
10 0 * * * wget -O /path/to/file-sv.sql "http://mydomain.com/path/?lang=sv"
11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"

Das Problem ist, dass nur die erste wget-Befehlszeile ausgeführt wird (oder genauer: die einzige Datei, die geschrieben wird, ist /path/to/file-sv.sql). Wenn ich die zweite und die dritte Reihe /path/to/file-en.sqlwechsle, wird stattdessen geschrieben. Die erste Zeile läuft immer wie erwartet, egal wo sie ist.

Ich habe dann erfolglos versucht lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sql; immer noch nur die erste luchslinie erfolgreich ausgeführt. Sogar das Mischen von Wget und Luchs hat dies nicht geändert!

Ein bisschen verzweifelt! Vermisse ich etwas? Es gibt Tausende von Artikeln über crontab (in Kombination mit) wget oder lynx, aber alle scheinen grundlegende Einstellungen und die Syntax zu behandeln. Hat jemand eine Ahnung, was ich falsch mache?

Danke,
Alexander

Alexander Wallin
quelle
Sind Sie sicher, dass bei jedem Zugriff auf mydomain.com/path/?lang=de etwas zurückgegeben wird? Haben Sie dies über eine Befehlszeile versucht, um zu sehen, was passiert (wget -O-mydomain.com/path/?lang=de )?
Torian
1
Ich würde versuchen, den Wagenrücklauf zwischen 2 und 3 zu löschen und neu zu erstellen.
Antonius Bloch
Es wird empfohlen, den vollständigen Pfad zu den ausführbaren Dateien in crontab anzugeben. Wie: "/ usr / bin / wget". Ich glaube nicht, dass dies in Ihrem Fall helfen würde, da einer der Crons arbeitet.
Antonius Bloch
Was wird in crons Log angezeigt, wenn dies passiert?
Bohnen
@Torian: Funktioniert wie ein Zauber.
Alexander Wallin

Antworten:

42

Versuchen Sie, am Ende Ihrer Crontab eine neue Zeile einzufügen.

gelraen
quelle
1
Du bist ein Glücksfall! Das hat es geschafft! Ich würde dich wählen, wenn ich den Ruf hätte. :)
Alexander Wallin
1
@gelraen Aber ... warum?
Samuel
2

Irgendetwas an dem Text stimmt nicht. Bearbeiten Sie Ihre Crontab in vim und zeigen Sie unsichtbare Zeichen an.

:set invlist

Sie sollten es sehen und dann korrigieren können.

Bahamat
quelle
Falsch wie? Wie bearbeite ich es in Vim? Ich habe versucht, die gesamte Datei neu zu schreiben, falls das Kopieren und Einfügen Probleme verursachen würde.
Alexander Wallin
@afEkenholm: wie bearbeitest du es jetzt?
Bahamat
1
@ Bahamat:# crontab -e
Alexander Wallin
@afEkenholm: Tun Sie dies:EDITOR=vim crontab -e
Bahamat
@ Bahamat: Alles sieht gut aus. Hast du $am Ende jeder Zeile ein Lila ?
Alexander Wallin
1

Versuchen Sie, eine Umleitung hinzuzufügen, um crontab zu debuggen (oder Root-Mail zu lesen):

11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en" > /tmp/crontab_ouptput 2> /tmp/crontab_error

Führen Sie auch "wget ​​-O /path/to/file-en.sql" http://mydomain.com/path/?lang=en "in der Konsole aus.

Verwenden Sie auch 'crontab -e', um eine neue crontab zu validieren.

Versuchen Sie auch, eine nicht funktionierende Zeile zu löschen und über die Tastatur erneut einzugeben.

Corntab sichern und Befehl ausführen:

crontab -l | crontab -
alvosu
quelle
Das Hinzufügen /tmp/crontab_ouptput 2> /tmp/crontab_errorfunktioniert nur für die erste Zeile. Das Ausführen des Befehls über die Konsole funktioniert einwandfrei. Habe die ganze Datei mit meinen bloßen Händen neu geschrieben, aber nichts hat sich geändert.
Alexander Wallin
Crontab sichern und versuchen: crontab -l | crontab -
alvosu
Vielen Dank für die Mühen, @alvosu, aber ein einfacher Zeilenumbruch hat es geschafft!
Alexander Wallin
1

Ich habe nur einige Zeit damit verbracht, die obigen Antworten (Hinzufügen von Zeilenumbrüchen, Löschen von Zeilenumbrüchen usw.) auf einem System zu testen, auf dem cronie ausgeführt wird . Schließlich wurde ein Fehler in cronie 1.5.3 gefunden , der nur den ersten Cron-Job für jeden Benutzer ausführt . Es ist in 1.5.4 behoben

https://github.com/cronie-crond/cronie/issues/30

Hoffe das spart jemandem etwas Zeit ...

Jeroen
quelle