cron job funktiniert aber

U

u75web

Jungspund
Hallo zusammen,

auf unserem Server läuft folgender Cron-job:
Code:
30 4 * * *      www-data        /usr/bin/php5 /var/www/die_domain1/php_inclu/ordner_pfad/import.php >> /tmp/import_4_30.log 2>&1

45 9 * * *      www-data        /usr/bin/php5 /var/www/die_domain1/php_inclu/ordner_pfad/import.php >> /tmp/import_9_45.log 2>&1

35 14 * * *     www-data        /usr/bin/php5 /var/www/die_domain1/php_inclu/ordner_pfad/import.php >> /tmp/import_14_35.log 2>&1

40 21 * * *     www-data        /usr/bin/php5 /var/www/die_domain1/php_inclu/ordner_pfad/import.php >> /tmp/import_21_40.log 2&>1

Dieser befindet sich in der Datei /etc/cron.de/die_domain1.

Der Vorgang.
Die php Datei import.php, holt von einem entferntem Server eine zip Datei ab, die zip Datei soll ausgepackt werden und der Inhalt in die DB geschrieben werden.

Aber, die zip Datei wird abgeholt, aber nicht immer entpackt, wenn die Datei nicht entpackt wird, wird der Inhalt auch nicht in die DB geschrieben.
Das Abholen funktioniert immer aber das entpacken und schreiben der Daten in die DB nicht.
Wo her weiß ich das das abholen funktioniert, das Datum und die Uhrzeit der Datei im Ordner stimmen mit der corn-job Angaben.

Wie oben sichtbar, sollen die Fehlermeldungen in die log Dateien geschrieben werden, die Logdateien werden zwar erstellt aber sie sind leer!

Meine Frage, ist der Aufruf in des cron-job falsch, dass keine Fehlermeldung in die Log Datei nicht übergeben werde?
Denn rufe ich den php Scirpt folgend auf:

Code:
*/10 * * * *      www-data        /usr/bin/php5 /var/www/die_domain1/php_inclu/ordner_pfad/import.php >> /tmp/import_10_min.log 2>&1

Läuft der Import sauber durch, dh. die Zip Datei wird abgeholt, entpackt und die Daten werden in die DB geschrieben!
Es wird auch eine leere import_10_min.log erstellt.

Wie kann ich den cron-job gesprächiger machen?

Debian GNU/Linux 6.0.6 (squeeze)
PHP 5.3.3-7+squeeze17 w

Grüße
u75web
 
Zuletzt bearbeitet:
Wie kann ich den cron-job gesprächiger machen?

1. Schauen ob der User "www-data" überhaupt in die Logfiles schreiben darf.
Gerne wird sowas mal eben als root getestet und die Logdateien liegen mit falschen Berechtiungen herum.

2. Debugausgaben in die "import.php" mit einbauen.
Der Cronjob schreibt nur das in Logs was irgendwo als Ausgabe aus einem Skript purzelt.

3. Prinzipjell wird alles was ein Cronjob an Ausgaben erzeugt per Email verschickt.
Von daher mal Testweilse die Ausgaben via "MAILTO=gueltige@emailadresse" per Email verschicken lassen.


mfg
HeadCrash
 
Cron Meldungen müssten sofern nichts am syslog geändert unter /var/log/syslog zu finden sein.

Ansonsten schließe ich mich HeadCrash an...
 
Hi,
zu 1.
der User "www-data" darf in /tmp Verzeichnis schreibe, die Dateiene sind da.
Jetzt habe ich den User in der Datei "/etc/cron.de/die_domain1" von www-data auf root geändert, um 14.35 Uhr weiß ich mehr.

zu 2.
Ja, das kann ich noch machen.

mft
u75web
 
Noch ist mir was eingefallen.
Ist es wichtig ob in der aufgerufene PHP Datei am Anfang folgender Coder vorhanden ist?

Code:
#!/usr/bin/php

Beeinflusst das den cron-job?
 
Der Befehl in der Crontab wird ueber die Shell /bin/sh interpretiert, sofern du SHELL nicht definiert hast. Weisst Du, ob Deine /bin/sh das Konstrukt '2>&1' interpretiert? Wenn ja, ist das Problem wohl eher bei /usr/bin/php5 zu suchen. Kannst Du den Fehler reproduzieren um rauszufinden, ob php5 ueberhaupt eine Fehlermeldung ausgibt?

zum "#!...": Da Du das Skript mit dem Interpreter php5 aufrufst, ist es egal, ob "#!..." in der Datei steht oder nicht.
 
Weisst Du, ob Deine /bin/sh das Konstrukt '2>&1' interpretiert
Nein weiß ich nicht, wie kann ich das her raus finden?

Wenn ja, ist das Problem wohl eher bei /usr/bin/php5 zu suchen. Kannst Du den Fehler reproduzieren um rauszufinden, ob php5 ueberhaupt eine Fehlermeldung ausgibt?

zum "#!...": Da Du das Skript mit dem Interpreter php5 aufrufst, ist es egal, ob "#!..." in der Datei steht oder nicht.
So richtig verstehe ich Dich nicht.
Ich kann den Script jeder Zeit "anscheisen" entweder per php import.php oder in der corn.de/die_domain1 in in bestimmten Zeitintervall laufen lassen.
Das habe ich schon früher gemacht, Fehler wurden in der Console oder in der log Datei nicht ausgeben.

Du den Fehler reproduzieren um rauszufinden, ob php5 ueberhaupt eine Fehlermeldung ausgibt?
Alle Fehlermeldung sind im Script "abgefangen" oder die Ausgaben werden an die weiter gegeben!


Im Augenblick ist kein Interpreter in der Datei, sondern sie fängt nur mit <?php an.


Nach dem ich den User auf root geändert habe ist das Script ebenfalls durch gelaufen, die log Datei wurde aber nicht geschrieben.
 
Nach dem ich den User auf root geändert habe ist das Script ebenfalls durch gelaufen, die log Datei wurde aber nicht geschrieben.

Erzeugt das Skript überhaupt ausgaben?
Wird die Logdatei angelegt, wenn sie nicht vorhanden war?
 
Janein, es wird nur eine leere log Datei erzeugt, wenn ich den cron-job als www-data User laufen lasse, als root wird keine erzeugt!
 
post #7 schrieb:
Alle Fehlermeldung sind im Script "abgefangen" oder die Ausgaben werden an die weiter gegeben!
Wenn es keine Ausgabe gibt, dann stimmt doch alles, wenn die Dateien leer sind.
 
Zuletzt bearbeitet:
@u75web

Beim letzten Cronjob stimmen die Zeichen zum Schluss nicht!
Code:
... import_21_40.log 2&>1
... import_21_40.log 2>&1
 
Hi,

Lord_x
... import_21_40.log 2>&1
Danke für die Anmerkung, habe es korrigiert.

Das Problem habe ich anderweitig gelöst, als erstes habe ich den PHP-Skritp umgebaut und die Ausführungszeit habe ich von 4.30 auf 5.15 Uhr versetzt.
Danke für Eure Unterstützung.

Grüße
u75web
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

NagiosGrapher 1.7.1 funktioniert nicht

rsnapshot und ein Rechteproblem?

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben