Script erstellt keine Logdatei trotz Berechtigung

Xiaolong

Lieutenant Pro
Registriert
Sep. 2008
Beiträge
978
Hallo zusammen,

ich habe ein kleines Problem. Ich habe ein Python Script, welches mir über eine API Daten aus einer XML Datei synchronisiert.
Das funktioniert soweit auch und nun würde ich das Ganze gerne automatisiert ablaufen lassen. Hierzu habe ich eine kleine VM mit Debian und habe dort das Script hochgeladen.

Das Script erstellt mir eine Logdatei "sync_log.log", welche sich im selben Ordner befindet. Dies funktioniert bei mit lokal auf dem Rechner (PyCharm in Win11) ohne Probleme. Leider kriege ich das auf meinem Debian nicht zum laufen.
Das Script befindet sich in:
Code:
/usr/py/StockUpdaterV1.py

Ich führe die Datei mit
Bash:
sudo /usr/bin/python3 /usr/py/StockUpdaterV1.py
aus.

Ich habe schon den Owner neu gesetzt und sogar chmodd auf 777 gesetzt, aber das logfile wird nicht geschrieben.
Bash:
chown -R master /usr/py/
chmod -R 777 /usr/py/

Ich habe einen Cronjob am laufen, da ist es mir aufgefallen. Der Cronjob lautet:

Bash:
0 21 * * * /usr/bin/python3 /usr/py/StockUpdaterV1.py >> /usr/py/output.log 2>&1
Die output.log wird erstellt, aber nur mit dem "Ladebalken" also praktisch die Konsolenausgabe.

Was übersehe ich hier?
 
Zuletzt bearbeitet:
Wie machst du die Ausgaben in dem Python Script? Mit logger oder print()?

Wenn du das so /usr/bin/python3 /usr/py/StockUpdaterV1.py ausführt, siehst du was in der Console?
 
  • Gefällt mir
Reaktionen: Xiaolong
Normalerweise reicht ein stumpfes
Bash:
/usr/bin/python3 /usr/py/StockUpdaterV1.py
aus. Zum testen habe ich tatsächlich sudo genommen, aber damit geht's auch nicht, habe auf falsche Berechtigungen getippt.

Das Basisscript in python sieht so aus:
Python:
logging.basicConfig(
    filename='sync_log.log',
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)
Dann jeweils mit der logging-Function aufgerufen.
 
Wenn du nur das /usr/bin/python3 /usr/py/StockUpdaterV1.py ausführst, siehst du was in der Console?
 
  • Gefällt mir
Reaktionen: Xiaolong
Jap und zwar genau das was kommen soll. Eine Zusammenfassung des XML to JSON Parsers und einen Ladebalken wie weit das ist. Das Script funktioniert und läuft. es erstellt nur keine Logdatei.
dms schrieb:
..dein Workingdirectyory ist das wo du in der Shell stehst und nicht /usr/py/ ...
Also den Absolutpfad da eintragen und nicht nur den Dateinamen?
 
Hast du logger vielleicht so
Code:
import logging

logging.basicConfig(filename='/usr/py/output.log', level=logging.DEBUG)
logger = logging.getLogger()

logger.info('This is an informational message.')
logger.error('This is an error message.')
initialisert?

Bzw. zeig mal, was du da genau machst.
 
  • Gefällt mir
Reaktionen: Xiaolong
OK, Problem solved, es war die Working Directory. Danke :)
 
  • Gefällt mir
Reaktionen: dms
Xiaolong schrieb:
Also den Absolutpfad da eintragen und nicht nur den Dateinamen?
Oder aus dem Aufrufpfad (sys.argv[0]) extrahieren, damit du keine absoluten Pfade im Skript hinterlegen musst.
 
  • Gefällt mir
Reaktionen: Xiaolong
Zurück
Oben