Wann wird ein cronjob als "error" gewertet?

Locked
bernhard
Posts: 142
Joined: Fri 29. May 2020, 14:36

Wann wird ein cronjob als "error" gewertet?

Post by bernhard »

Hallo Community,

habe gesucht, aber nur das gefunden (was nicht weiterhilft): viewtopic.php?t=9482

Ich habe einen Cronjob angelegt, der ein PHP Skript ausführt, das wiederum ein git stash ... git pull macht. Der Output sieht dabei so aus:

Code: Select all

# ----- 2020-07-06 18:31:01 -----
# Running Master Cronjob

# RockCI
# 1 webhooks found
No local changes to save

Entering 'site/modules/RockCI'
No local changes to save
Entering 'site/modules/RockMigrations'
No local changes to save
Entering 'site/modules/RockTrigger'
No local changes to save

Updating e38...a9
Fast-forward
 site/modules/RockCI | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Submodule path 'site/modules/RockCI': checked out 'e56...e76'
Das logge ich in eine Datei und das klappt auch prima - was ich nicht verstehe, ist, dass er mir manche logs as Fehler per Mail schickt und manche nicht... Die Einstellung in Keyhelp für den Cron ist so:

Image

Hier ein log, das ich nicht per Mail bekomme (das mit anderen Worten wohl nicht als Fehler erkannt wird):

Code: Select all

# ----- 2020-07-06 18:33:02 -----
# Running RockTrigger Master Cronjob

# RockCI - nothing to do
Habt ihr ne Idee? Danke im Voraus!
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

Re: Wann wird ein cronjob als "error" gewertet?

Post by OlliTheDarkness »

Wenn du im Cronbefehl bzw. im Script keine eigene Fehlerverarbeitung hast, sollte es immer erfolreich sein, ausgenommen:

Befehl ist falsch,
Ziel ist nicht vorhanden,
Ziel ist nicht ausführbar,
TimeOut (Laufzeit überschritten und abgebrochen).

Letzteres kommt glaub ich bei dir in betracht, weil nen pull je nach Datenmenge , Größe und Leitungsleistung länger dauern kann.

Das alles is nur eine mögliche Idee.
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
User avatar
Tobi
Community Moderator
Posts: 2812
Joined: Thu 5. Jan 2017, 13:24

Re: Wann wird ein cronjob als "error" gewertet?

Post by Tobi »

Ein Cronjob wird nur dann als "error" gewertet wenn die Standard-Fehlerausgabe STDERR "gefüllt ist".
viewtopic.php?f=7&t=1367&p=5001#p5001

In Ergänzung zu:
viewtopic.php?f=5&t=1368&p=4995#p4993
Gruß,
Tobi


-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
bernhard
Posts: 142
Joined: Fri 29. May 2020, 14:36

Re: Wann wird ein cronjob als "error" gewertet?

Post by bernhard »

Danke ihr beiden! Ich hab jetzt zwar noch keine Lösung, aber ich habe immerhin herausgefunden, dass mein Skript nur dann output erzeugt, wenn git nen change zieht. Dieser output wird leider nicht per $rt->log(...) ins file geschrieben sondern offenbar zu stdout.

Mal sehen, wie ich das abfange...
bernhard
Posts: 142
Joined: Fri 29. May 2020, 14:36

Re: Wann wird ein cronjob als "error" gewertet?

Post by bernhard »

Habt ihr vielleicht Tipps für mich, wie ich den output von

Code: Select all

git stash
git submodule foreach 'git stash'
git pull
git submodule update --init --recursive
sauber per file_put_contents() in ein logfile bekomme, ohne dass output an stdout geliefert wird?

Mit exec() und shell_exec() geht es mal nicht...

PS: Ich würde das gerne per PHP machen und nicht via exec("git pull >> /foo/bar.log"), da mein $rt->log(...) zusätzliche Logik beinhaltet und mehrere Logfiles anlegt!
select name from me;
Posts: 579
Joined: Tue 9. Feb 2016, 16:44

Re: Wann wird ein cronjob als "error" gewertet?

Post by select name from me; »

baumrock wrote: Mon 6. Jul 2020, 20:48 Habt ihr vielleicht Tipps für mich, wie ich den output von

Code: Select all

git stash
...
sauber per file_put_contents() in ein logfile bekomme, ohne dass output an stdout geliefert wird?
Ich kenne Deinen Code nicht und habe es auch nicht getestet.
Aber meist hilft es, STDERR an STDOUT weiterzuleiten.

Also in etwa so:

Code: Select all

shell_exec( 'git pull >> /foo/bar.log 2>&1' );
Viele Grüße, Christian
Locked