# Skript wird auf Shell ausgeführt, aber nicht als Cronjob



## Jörgi15 (19. Dezember 2009)

Ich habe das folgende kleine Shellskript:

#!/bin/bash
/www/htdocs/cms/test/execute/cli-scripts.phpsh mail

Dieser Befehl sorgt dafür, dass mir das aufgerufene Skript eine Mail schickt.
Ich könnte auch ein Skript aufrufen, das bloß eine Datei schreiben soll. Klappt als Cronjob auch nicht...

Wenn ich das auf der Shell ausführe, funktioniert es. 
Eine Ausführung als Cronjob funktioniert aber einfach nicht. 

Ich habe irgendwas von Umgebungsvariablen gelesen, die gesetzt sein sollen (PATH=...).
Davon hab ich keine Ahnung, aber jedenfalls die Variable "PATH" ist in beiden Fällen mit dem gleichen Inhalt gefüllt.


----------



## Jörgi15 (19. Dezember 2009)

Wenn ich in das Skript am Ende einen Befehl eintrage, der mir eine Zeile in eine Datei schreibt, shee ich, dass der Cronjob da wohl ankommt.

Aber da muss ein Fehler in dem ausgeführten PHP-Skript sein.

Gibt es eine Möglichkeit, bei Ausführung als Cronjob eine Ausgabe davon zu erhalten?


----------



## Adrian_Broher (19. Dezember 2009)

Jörgi15 hat gesagt.:


> Dieser Befehl sorgt dafür, dass mir das aufgerufene Skript eine Mail schickt.



Ew. man mail.



Jörgi15 hat gesagt.:


> Gibt es eine Möglichkeit, bei Ausführung als Cronjob eine Ausgabe davon zu erhalten?



Sicher gibt es die.

Hier ein moeglicher Weg mittels stream redirect.

[sh]
#!/bin/bash
/www/htdocs/cms/test/execute/cli-scripts.phpsh mail &> /name/of/log/file[/sh]

Schreibt den stdout wie auch den den strderr in die Datei /name/of/log/file. 

Ein weiterer waere eine Eintragung der MAILTO Variable in die Crontab.


----------



## Jörgi15 (19. Dezember 2009)

Hi Adrian, vielen Dank für die Idee.

Dass mir das Skript nur eine Mail schickt, ist bloß ein Proof of Concept. Wenn es läuft, soll es Wartungsarbeiten an einer Homepage durchführen.

Wenn ich das Script wie von dir empfohlen modifizieren, erhalte ich folgendes als Ausgabe:

X-Powered-By: PHP/5.2.8
Content-type: text/html

/www/htdocs/cms/test/execute/cli-scripts.phpsh mail &> /www/htdocs/cms/test/ausgabe.txt

Sprich mir wird der Inhalt des Shell-Skripts ausgegeben (ohne Shebang-Zeile). Das war wohl nichts...


----------



## Raubkopierer (21. Dezember 2009)

Du hast das Skript aber auch mit entsprechenden execute-Rechten versehen damit es vom crond entsprechend gestartet werden kann?


----------



## Jörgi15 (21. Dezember 2009)

> Du hast das Skript aber auch mit entsprechenden execute-Rechten versehen damit es vom crond entsprechend gestartet werden kann?


Meinst du damit die Dateiberechtigungen? Die stehen auf 750...
Und auf der Shell läuft es ja auch.


----------



## Adrian_Broher (22. Dezember 2009)

Jörgi15 hat gesagt.:


> Meinst du damit die Dateiberechtigungen? Die stehen auf 750...
> Und auf der Shell läuft es ja auch.



Wer ist Besitzer der Datei? Unter welchem Benutzer laeuft die Crontab?


----------



## Jörgi15 (22. Dezember 2009)

> Wer ist Besitzer der Datei? Unter welchem Benutzer laeuft die Crontab?


ls -all gibt aus:
-rwx-r-x-xxx 1 nobody 122 2009-12-19 12:51 script

Wie bekomme ich das mit dem Cronjob raus? Es ist ein Shared-Server, bei dem ich keinen Zugriff auf crontab -l habe. Ich richte den Cronjob "indirekt" durch ein Kundenmenü ein: Da muss man nur den Pfad zu der auszuführenden Datei angeben...


----------

