Seite 1 von 1
manuelle Ausführung klappt, als Cronjob nicht
Verfasst: Dienstag 6. Februar 2007, 11:34
von snakeseven
Hi,
habe kleines Problem mit Python-Script als Cronjob:
Wenn ich es manuell ausführe, wird korrekt der Folder des Scriptes ermittelt. Wenn ich es als Cronjob ausführen lasse, liefert "av = string.split(arbeitsverzeichnis,'/')" , ' ', also nichts.
manuell ausgeführt werden Teilpfade richtig gesplittet:
Code: Alles auswählen
/root/Test # Arbeitsverzeichnis
['', 'root', 'Test'] # av
Test/ # Scriptfolder
Wo könnte das Problem liegen ?
Hier der Dreizeiler zum Pfadsplitting:
Code: Alles auswählen
arbeitsverzeichnis = os.getcwd()
av = string.split(arbeitsverzeichnis,'/')
clientfolder = av[len(av)-1] + '/'
Gruss, Seven
Verfasst: Dienstag 6. Februar 2007, 11:57
von jens
Wow, was machst du denn da?
Also generell würde ich das
av = string.split(arbeitsverzeichnis,'/') so machen:
av = arbeitsverzeichnis.split("/")...
Warum aber nicht os.path.split() nehmen? Also so:
Code: Alles auswählen
import os
arbeitsverzeichnis = "/test/foo/bar"
clientfolder = os.path.split(arbeitsverzeichnis)[1] + "/"
print clientfolder
btw. lass dir doch einfach mal das os.getcwd() ausgeben, oder schreib es in eine Log-Datei...
Verfasst: Dienstag 6. Februar 2007, 16:54
von snakeseven
jens hat geschrieben:Warum aber nicht os.path.split() nehmen?
kenn ich nicht, probiers aber gerne mal aus.
jens hat geschrieben:
btw. lass dir doch einfach mal das os.getcwd() ausgeben
Hab ich. Da steht als Cronjob '/root' drin, sonst '/root/Test'.
Gruss, Seven
Verfasst: Dienstag 6. Februar 2007, 17:13
von jens
Wie wäre es, du startest dein Skript mit einem Parameter, der den Pfad angibt?
Verfasst: Dienstag 6. Februar 2007, 19:28
von snakeseven
ja, so hatte ich es auch bislang und wollte optimieren:
Ich habe verschiedene Clienten auf dem Server. Jedem sind ein eigener CGI-Subfolder, ein HTML-Subfolder und ein Cronjob-Subfolder zugeordnet, die nach ihm benannt sind. Um beim Erstellen eines neuen Kunden die Pfade nicht aktualisieren zu müssen, leiten sich die Scripte den Namen ihres zugehörigen CGI-, HTML und Cronjob -Subfolders aus dem Namen ihres eigenen Sourceordners her. Klappt ja auch super, nur als Cronjob nicht. Und ich dachte, vieleicht kennt jemand das Problem ? Zumal es ja von der Shell aus gestartet tut was es soll. Mysteriös ....
Gruss, Seven
Verfasst: Dienstag 6. Februar 2007, 20:32
von Leonidas
Ich tippe mal darauf, dass os.getcwd() etwas anderes liefert, als du gerne hättest - denn es ist ja nirgendwo gesagt, dass Cron bevor er das Skript startet in den Ordner des Skriptes wechselt. Genauso gut kann das WD auch / sein. Solltest du mal mit ``print os.getcwd()`` prüfen.
Ansonsten würde ich so eine Variante nutzen (vorrausgesetzt der Pfad endet nicht mit einem Slash):
Code: Alles auswählen
In [13]: system_path = '/root/Test'
In [14]: import os
In [15]: os.path.basename(system_path)
Out[15]: 'Test'