script über cron nicht ausführbar

Lord_Icon

Member
Hi,

ich hab ein Script, was ich per
php test super starten kann.

Trage ich dies nun über die crontab ein, passiert leider nichts.
In /var/log/message steht zwar drin, das cron die Datei ausgeführt hat.. aber der Inhalt scheint nicht umgesetzt zu werden.

Hat hier einer eine Idee ?
 
Hallo,

Wie immer bei Cron Fehlern:
1.) Lass dir den Cronjob per Email ausgeben
2.) (Wahrscheinlich liegt hier der Punkt) Erkennt Cron die Pfade? Die PATH Variable für Cron ist meistens nicht gerade sehr umfangreich, so kann es sein, dass Cron nichts mit dem Befehl "php" anzufangen weiß. Versuchs mal mit dem absoluten Pfad zu php. Findest du herraus mit:
Code:
which php
3.) Stimmen die Zugriffsrechte, welche Rechte hat das Script, welchen Owner? Als was wird der Cronjob ausgeführt?
 
naja.. nicht ganz.

php liegt bei mir in /usr/bin/php, was which php auch bestätigt.

Ich habe das auch schon am Anfang der Datei eingetragen:
#!/usr/bin/php

Ebendfalls schon in der Cron

Code:
* * * * * /usr/bin/php  /home/test.php
* * * * * root /home/test.php

in der message steht halt nur drin, das er den Cron ausgeführt hat. Ohne weitere Fehlermeldung. Aber das ist so nicht korrekt. Denn würde es gehen, würde ich jede Minute eine Mail bekommen.

Hab die Datei nun schon ins Public ORdner gelegt und cronjob.org die Datei ausführen lassen. Da geht das ganze auch... nur Cron selbst will nicht **wirr**

Und ja... die Datei hat mittlerweile 777 Rechte. Da sollte es egal sein, ob wwwrun oder root die Datei ausführt. (Datei gehört mittlerweile root mit 777)
Ich selbst führe die Datei ja manuell auch per root aus. Da klappt es ja. Bin grad n bissel ratlos
 
Also test.php schickt dir eine Mail?
Dann würde ich mal die test.php debuggen. Bau doch mal eine echo-Debug Ausgabe rein und guck mal ob cron die ausgibt.
 
soo... ich habe die Vermutung, das Cron nicht korrekt arbeit.

ich hab in /etc/cron.d folge Datei mit folgenden Inhalt drin:

/etc/cron.d/test.sh
Code:
<?php
mail(***@web.de, Betreff, Nachricht, "From: Absender <Absenderemail>");
?>

Diese hat 0644 an Rechten. (root als Eigentümer)

Führe ich diese Manuell aus = works. Email da.

Cron selbst macht aber nix.


Nun kommt sichelrich die Frage: was steht denn in den Logs.
Alles was ich in /etc/cron.** drin hab, wird anscheind nicht ausgegeben. Es sei denn ich hab ein Fehler drin.

z.b. Hier hatte die noch nicht 0644 gesetzt.
Feb 4 13:00:01 h1158192 /usr/sbin/cronÄ5430Ü: (*system*) RELOAD (/etc/cron.d/test.sh)
Beweißt aber, das er die Datei ausführt.

Unabhängig davon = füge ich es über crontab -e ein, geht es zwar auch nicht... aber ich bekomm wenigsten ein Log:
Feb 4 13:15:01 h2128192 /usr/sbin/cronÄ11913Ü: (root) CMD (/local/orders/test.sh)

Weiß einer Rat ?
Es muß irgendwas am Server sein. Denn das Script läuft auch auf einen anderen Server.
 
Wenn ich mir das so anschaue, seh ich direkt mal zwei Sachen:

1.) Es ist PHP Code aber du machst eine Bash-Datei (*.sh)
2.) In deinem ersten Post wars auch noch eine PHP Datei die du über "php script" aufriefst.

Also entweder so:
Code:
/bin/sh /path/to/test.sh
Dann aber bitte auch nur mit BASH Code und nicht mit PHP Code

ODER so:
Code:
/usr/bin/php /path/to/test.php
Und dann bitte PHP Code in der test.php.

Und das hier sagt mir, dass der Cronjob nur das Script ausführt:
Code:
Feb 4 13:15:01 h2128192 /usr/sbin/cronÄ11913Ü: (root) CMD (/local/orders/test.sh)
dort sollte aber stehen: /bin/bash /local/orders/test.sh

Achja und zu den Rechten in der /etc/cron.d => 644 Reicht nicht aus, AFAIK, die Datei muss ausführbar sein.
 
Weiterer Fehler: Wenn das Ganze in /etc/crontab eingetragen ist, darf der Name keinen Punkt "." enthalten. Lies mal die man-page zu crontab
 
soo... leider hat nichts funktioniert.

zu *.php <=> *.sh
Ist korrekt... ich hab mittlerweile derartig viel ausprobiert, das ich das falsche gepostet hatte.

Also nochmal anders und so wie es vorgeschlagen worden ist.


1:
/home/e/<domain>.com/public_html/amazonorders/getorders
* * * * * /usr/bin/php /home/e/<domain>.com/public_html/amazonorders/getorders

Diese Datei hat erst 644 und später sogar 7777.

Cron.log sagt folgendes:
Feb 5 08:21:01 h2258192 /usr/sbin/cron[6122]: (root) CMD (/usr/bin/php /home/e/<domain>.com/public_html/amazonorders/getorders)

Ausgeführt wird diese anscheind. Aber eine Mail bekomm ich nicht.

2ter Verusch meinerseits. Datei kopiert nach /etc/cron.d
Hier bekam ich anfänglich
Feb 5 08:19:01 h2258192 /usr/sbin/cron[5430]: (*system*) BAD FILE MODE (/etc/cron.d/getorders)

Nachdem ich es auf 777 gesetzt hab, war auch dieser Fehler behoben. Eine Email bekomm ich aber dennoch nicht. :mad:

Irgendwas is am System. Denn das gleiche Script läuft ohne Probleme auf ein anderen System sauber durch.
Vielleicht liegt es auch daran, das ich hier n Suse 9.0 System verwalten muß und darauf auch das tote Projekt Viesa (Serveradmin24) drauf läuft.
 
Back
Top