2017-07-04 1 views
0

Also habe ich dieses Shell-Skript, das dynamisch ein anderes Skript erstellt und es aufruft (d. H. Ein verschachteltes Skript).Ausgabeumleitung von verschachteltem Skript funktioniert nicht mit Cron

So etwas, sagen wir es the_script.sh genannt wird:

#!/bin/sh 

# do some stuff here, and create another script 
./nested_script.sh 

# do some other stuff, end 

Wenn ich es gibt zu STDOUT alles nur ./the_script.sh nennen, einschließlich der Ausgabe des verschachtelten Skript.

Aber wenn es läuft von einem Cronjob, etwa so:

0 8,12 * * 1-5 /home/myuser/the_script.sh >> /home/myuser/thescript.log 

Dann ist es nicht ausgibt das Ergebnis des verschachtelten Skript, das für mich sehr wichtig ist. Das Ergebnis beider Skripts ist korrekt, es wird jedoch ausgeführt (von der Eingabeaufforderung oder dem Cron) und es wird wie erwartet ausgeführt.

Gibt es Hinweise darauf, warum dies geschieht und wie man das verhindert?

Antwort

1

Um Fehler in Protokoll anzeigen 2>&1

0 8,12 * * 1-5 /home/myuser/the_script.sh >> /home/myuser/thescript.log 2>&1 

Dann Zugabe es so etwas wie : No such file or directory angezeigt wird, ist dies, weil aktuelle Arbeitsverzeichnis nicht das Verzeichnis der Schale ist. Am saubersten ist der absolute Pfad, sonst cd -- "$(dirname "${0:-.}")"

+0

Das hat funktioniert, danke. Und es wurde nirgendwo ein Fehler angezeigt. Es hat nur alles ausgegeben, was ich wollte. –

0

Der Cron wird nicht aus dem Home-Verzeichnis eines bestimmten Benutzers ausgeführt. Daher funktioniert ./nested_script.sh möglicherweise nicht. Sie sollten den absoluten Pfad angeben, damit der Cron genau weiß, wo er ist.

+0

Es funktioniert. Es läuft wie erwartet. Es gibt nichts aus. –

+0

Dies funktioniert für mich, indem ich zwei Skripte mit jeweils einem einzigen Echo benutze. Könnten Sie dort, wo dies fehlschlägt, minimalen Code posten? –

+0

Versuchen Sie, Nested_script.sh mit Quelle und so "Quelle Nested_script.sh" –

Verwandte Themen