Autostart: wo wird Skript ausgeführt? Dateien anlegen...

  • Hallo Gemeinde,

    ich habe ein Python Skript erstellt und möchte dieses beim hochfahren des Systems ausführen. Habe dies auch mit dem im Netz kursierenden Skript hinbekommen:

    In dem Skript erzeuge ich Ordner und ein paar SQLite-DBs, falls diese nicht existieren. Jetzt ist mir aufgefallen, dass diese Ordner in dem init.d Verzeichnis erzeugt wurden (und deswegen das Skript nicht funktioniert). Ich habe in meinem Skript die Angaben zum Speicherort den Ordner relativ gehalten, d.h.:

    DATABASE_DIR = "folder"
    ADMIN = "folder/administration"

    Jetzt besteht bei mir die Frage: Wo wird das Skript eigentlich ausgeführt? Muss ich, wenn ich den Autostart über init.d ausführe, in meinem Skript immer den absoluten Pfad angeben? Oder muss ich mit der Funktion

    [font="Consolas, Menlo, Monaco,"]dir_path = os.path.dirname(os.path.realpath(__file__))

    [/font]den Arbeitspfad ermitteln und vor jede Pfadangabe schreiben? Oder habe ich irgendetwas anderes nicht beachtet?


    Mit besten Grüßen
    homerunjack

  • Autostart: wo wird Skript ausgeführt? Dateien anlegen...? Schau mal ob du hier fündig wirst!

  • Mit absoluten Pfaden bist du immer auf der sicheren Seite.
    Du kannst ja BASEDIR="/pfad/" setzen und davon ausgehend relative Pfade nutzen, DBPATH=BASEDIR + "db/" etc.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (28. September 2016 um 09:42)

    • Offizieller Beitrag

    Du solltest immer den absoluten Pfad angeben. relative Pfade verwirren bloss dich und andere beim Korrekturlesen.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Einmal editiert, zuletzt von dbv (28. September 2016 um 09:39)

  • Zitat

    Du kannst ja BASEDIR="/pfad/" setzen und davon ausgehend relative Pfade nutzen, DBPATH=BASEDIR + "db/" etc.

    Hallo,
    so habe ich das jetzt letztendlich abgeändert und es funktioniert. Finde es trotzdem merkwürdig, dass die Ordner, die nicht exisitieren, in der init.d erzeugt werden. Das Skript liegt ja eigentlich ganz woanders...

    Ich hatte bei diesem Skript relative Pfade genommen, da ich es eventuell mehrfach auf einem gleichem PC verwenden will..Dann muss ich für jede Kopie den absoluten Pfad angeben bzw. mit dir_path = os.path.dirname(os.path.realpath(__file__)) klappt es ja scheinbar auch...

    Danke euch...

  • so habe ich das jetzt letztendlich abgeändert und es funktioniert. Finde es trotzdem merkwürdig, dass die Ordner, die nicht exisitieren, in der init.d erzeugt werden. Das Skript liegt ja eigentlich ganz woanders...

    Es ist egal wo das Script liegt, interessant ist nur von wo aus es aufgerufen wird ($PWD, present(/print) working dir).

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Dein Script wird über ein /etc/init.d/ Script ausgeführt also ist der "relative Pfad" /etc/init.d/ und da du in deinem Python Script keinen absoluten Pfad gesetzt hast werden auch im /etc/init.d/ Verzeichnis die Dateien/Verzeichnisse erzeugt. Das ist also normal nicht merkwürdig :fies:

    Es gibt aber auch noch andere "autostart"-Möglichkeiten: FAQ => Nützliche Links / Linksammlung => Autostart

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!