2017-11-01 1 views
0

Ich habe ein Python-Skript, das eine TXT-Datei aktualisiert.Python + Cron: Keine solche Datei oder Verzeichnis

Wenn ich die Datei manuell im Terminal ausführen, funktioniert es, es aktualisiert auch die Datei. Dies scheint jedoch nur ein Problem zu sein, wenn es mit Cron ausgeführt wird.

Die Antwort in der Protokolldatei ist:

Keine solche Datei oder das Verzeichnis: 'uploads/test.txt'

Der Cron-Befehl hierfür lautet:

* * * * * /usr/bin/python3 /root/script.py >> /root/log.log 2>&1 

Ich bin buchstäblich ratlos. Irgendwelche Lösungen?

+0

Haben Sie versucht, in einen absoluten Pfad zur 'test.txt' Datei mit' script.py'? – schwobaseggl

+0

Ich habe versucht, mit '~/root/uploads.test.txt' ist das der absolute Pfad? – JamesG

+0

Das sieht nicht richtig aus Versuchen Sie '/ root/uploads/test.txt'! Ohne das' ~ 'ist das der Pfad zum Home-Ordner des Benutzers curretn – schwobaseggl

Antwort

1

uploads/test.txt ist ein relativer Pfad. Cron wird nicht vom übergeordneten Verzeichnis uploads ausgeführt. Verwenden Sie einen absoluten Pfad zum Upload (zB. /data/foo/uploads/test.txt oder cwd zu übergeordnetem Verzeichnis von uploads.

+0

Sie könnten auch 'cd/data/foo && exec python ...' als Alternative vorschlagen (der 'exec' ist nur eine Leistungsoptimierung - bedeutet, dass die Shell nicht im Speicher nach 'python' bleiben muss) wird gestartet - aber das '&&' ist kritisch: Bedeutet, dass wir nicht versuchen, den Python-Interpreter auszuführen, wenn wir nicht in das Verzeichnis wechseln können, von dem das Skript erwartet, dass es gestartet wird. –

Verwandte Themen