Problem - Unterschied von Shell zu crontab
Phil
- webserver
0 3vi10 Phil
0 Dennis
0 Vinzenz Mai
Hallo Zusammen,
Folgendes einfaches Script habe ich mir geschrieben (Debian)
if [ "xyz" = "xyz" ] ; then
echo "Erfolg" > Erfolg.text
else
echo "Misserfolg" > Misserfolg.txt
fi
Nun, wenn ich das Programm mit Putty starte funktioniert alles einwadnfrei. Wenn ich aber das Programm mittels Crontab automatisch laufen lasse, passiert überhaupt nichts!
Wie kann das sein?
Danke und Gruss
echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';
hmm auf die Rechte geachtet? Wenn das Script nur von Besitzer ausgeführt werden kann funktioniert es mit Crontab nicht (zumindest war es bei mir so).
Grüße
Markus
Hallo,
Danke für die fleissige Hilfe. An den Rechten liegt es nicht, habe es eben getestet. Der Tipp mit dem cd war auch super, auch dieser hat nicht das gewünschte Resultat erbracht.
Ich habe in meinen Root-Mails angeschaut, keine Fehlermeldungen. Es scheint mir sowieso alles ein wenig seltsam. Ursprüglich hat das Script wie folgt ausgesehen.
x=$(grep 'xyz' datei_mit_diesem_Inhalt.php)
if [ "$x" = "xyz" ] ; then
echo "Erfolg" >> Log.txt
else
echo "Misserfolg" | mail info@beispiel.de
fi
Dieses Script wollte ich verwenden um die Verfügbarkeit meines Servers zu testen.
Nun das ursprüngliche Problem war, das auch in diesem Fall das Script, wenn es direkt ausgeführt wurde, perfekt funktioniert. (Wenn xyz=xyz wir ein Log eintrag erstellt. Wenn ungleich wird eine Mail versendet)
Wir dieses Script nun mittels crontab ausgeführt, wird die Mail immer gesendet, egal ob xyz=xyz oder nicht?
Den Code habe ich geprüft, die Variablen stimmen. Das seltsame ist ja, wenn ich das Script von Hand via Putty ausführe, klappt es!
*verwirrt bin* :-)
Hi Phil,
if [ "xyz" = "xyz" ] ; then
echo "Erfolg" > Erfolg.text
else
echo "Misserfolg" > Misserfolg.txt
fi
Nun, du hast also dieses Script beispielsweise in einer Datei namens test.sh abgespeichert, welche Ausführrechte besitzt, ja?
Wenn du das Script über die Shell startest, das Script unter /home/phil/test.sh liegt und du dich im Ordner /home/phil befindest, so versucht das Script die Dateien /home/phil/Erfolg.text bzw. /home/phil/Misserfolg.txt anzulegen. Da das in deinem Home-Directory ist, sollte das kein Problem sein ;-)
Führt nun der Cronjob dein Script aus, so muss es nicht unbedingt sein, dass der Cronjob vorher in das Verzeichnis /home/phil wechselt. Befindet er sich in /, so versucht dein Script /Erfolgt.text bzw. /Misserfolg.txt anzulegen - was hoffentlich nicht funktionieren sollte *g*
Ich weiß jetzt gerade nicht in welchem Directory der Cronjob das Script ausführt, wenn du nichts anderes angibst, aber hast du schon mal probiert in deinem Script mit einem cd /home/phil
anzufangen? Alternativ (in machen Fäller vielleicht sogar besser) kannst du natürlich auch die Ausgabedateien absolut angeben also „> /home/phil/Erfolg.text” etc.
Ach ja, hast du mal in deinem mail
geguckt, ob du nicht eventuell Fehlermeldungen als Mail bekommen hast? Das sollte eigentlich standardmäßig der Fall sein. Du kannst dies in deiner crontab
aber auch deaktivieren bzw. eine andere E-Mail Adresse angeben.
Viele Grüße,
~ Dennis.
Hallo Phil,
Folgendes einfaches Script habe ich mir geschrieben (Debian)
if [ "xyz" = "xyz" ] ; then
das ist sicher bereits ein erster Fehler, vielleicht auch ein Übertragungsfehler.
echo "Erfolg" > Erfolg.text
else
echo "Misserfolg" > Misserfolg.txt
fiNun, wenn ich das Programm mit Putty starte funktioniert alles einwadnfrei. Wenn ich aber das Programm mittels Crontab automatisch laufen lasse, passiert überhaupt nichts!
Wie kann das sein?
Du solltest in Deine Mail schauen.
Ausgaben auf die Standardausgabe werden typischerweise dem Besitzer des Cronjobs
zugemailt, siehe auch
man cron
Eine Alternative wäre es, die Ausgabe des Skriptes in einer Logdatei aufzuzeichnen.
Freundliche Grüße
Vinzenz
Hallo Ingrid,
echo "Erfolg" > Erfolg.text
else
echo "Misserfolg" > Misserfolg.txt
ich bin müde,
Eine Alternative wäre es, die Ausgabe des Skriptes in einer Logdatei aufzuzeichnen.
Absolute Pfadangaben, wie von Dennis empfohlen, sind sehr empfehlenswert.
Freundliche Grüße
Vinzenz