2009-06-04 3 views
0

folgende cronjob in root crontab eingerichtet haben Timeout werden: (CentOS 5.x)Cron-Job scheint

2 * * * * /usr/bin/curl --basic --user 'user:pass' http://localhost/cron/do_some_action > /var/www/app/cronlog.log 

die tatsächlichen Befehl funktioniert aufrufen, wie erwartet, aber wenn die Cronjob läuft, ist es immer mal aus. Ich habe set_time_limit() und damit verbundene php.ini-Einstellungen verwendet, um sicherzustellen, stirbt nicht PHP und/var/log/cron sieht normal zu mir:

4. Juni 10.02.01 foobar crond [12138]: (Wurzel) CMD ([Schnipsel])

Irgendwelche Ideen darüber, warum der Cronjob sterben würde?

+0

Zeigen Ihre Serverprotokolle cURL beim Zugriff auf das Skript? – ceejayoz

+0

ja. Ich bin auch Rohrausgabe in eine Protokolldatei (die beschreibbar ist), die inkrementelle Statusaktualisierungen zeigt, welche Datensätze aktualisiert wurden und welche nicht, so kann ich bestätigen, dass es funktioniert. – Kyle

Antwort

1

ich es herausgefunden - curl Fortschritte Statistik:

(100 65622 0 65622 0  0 1039  0 --:--:-- 0:01:03 --:--:-- 1927) 

geschrieben wurden aus irgendeinem Grund nach stderr - Zugabe von 2> & 1 am Ende des Befehls festgelegt es:

2 * * * * /usr/bin/curl --basic --user 'user:pass' http://localhost/cron/do_some_action > /var/www/app/cronlog.log 2>&1 

Danke an alle für die Einsicht!

1

Hinzufügen eines Benutzers

02 * * * * root/usr/bin/curl --basic --user 'user: pass' http://localhost/not/porn> /var/www/app/filethatrootcanwriteto.log

+0

Ich sollte klarstellen, dass der Cron-Job * läuft *, es läuft nur irgendwann ab. aber ich werde es versuchen. Danke. – Kyle

+0

auch, ist es Mailing-Root mit Fehlern? –

+0

@tristan nein - läuft mit root prefixing/usr/bin/curl warf tatsächlich die einzigen Fehler, die ich bisher gesehen habe – Kyle

0

Es kann 2 php.ini-Dateien geben, eine für Apache und eine für CLI.

Suchen Sie nach php.ini sollte beide finden, ich würde vorschlagen, Sie zuerst dort überprüfen.

+0

danke - schon überprüft und doppelt überprüft. Das Skript vergeht * nicht * beim manuellen Aufruf, nur wenn cron für den Aufruf verantwortlich ist. – Kyle

0

Dies kann auch vermieden werden, indem Sie Ihre PHP-Ausgabe mit ob_start() und ob_end_flush() zwischenspeichern, um zu verhindern, dass curl den Status vorzeitig zurückgibt.