ubuntuusers.de

Python Programm automatisch starten

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

buschmann

Anmeldungsdatum:
20. Januar 2010

Beiträge: 314

Hallo alle,

also ich will, dass ein Python Programm (script) beim boot automatisch gestartet wird.

Das soll erstmal nicht schwer sein, mit der rc.local oder einem crontab.

Nur das macht er einfach nicht. Mir scheint, als wenn das ein Pfad-Problem wäre. Und dazu könnte ich jetzt etwas Hilfe gebrauchen.

der Normalstart von hand sieht so aus:

 user@Rechner$ cd Verzeichnis
user@Rechner/Verzeichnis$ sudo python script.py start -arg

Dann läuft das auch alles wie gewünscht.

Will ich das Programm aus dem Hauptverzeichnis starten,

user@Rechner$ sudo python /home/user/verzeichnis/script.py start -arg

kommt die Fehlermeldung, dass er script.cfg nicht finden kann (liegt im selben Verzeichnis).

Trage ich jetzt einen Startbefehl entweder in der rc.local oder einem crontab ein, passiert das gleiche.

Er startet zwar das script.py, kann aber die Konfiguration aus der .cfg im selben Verzeichnis nicht finden.

Nun habe ich schon

:home/user/verzeichnis

in der /etc/environment an den Pfad ($PATH) angehängt in der Hoffnung, aber es half nix.

Es scheint mir, als wenn er nach dem Aufruf von script.py auf die Dateien in /verzeichnis nicht zugreifen kann, oder nur dann, wenn ich auch direkt aus /verzeichnis den Befehl ausführe.

Und damit machts das für einen aufruf aus rc.local oder cron schwierig.

Hat jemand ne Idee??

cu der Buschmann

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11243

Wohnort: München

buschmann schrieb:

Hat jemand ne Idee??

Entweder du nutzt einen absoluten Pfad für die script.cfg im Python-Skript oder du wechselst vor der Ausführung des Skripts mit cd in das Verzeichnis, in dem das Skript liegt.

buschmann

(Themenstarter)

Anmeldungsdatum:
20. Januar 2010

Beiträge: 314

seahawk1986 schrieb:

Entweder du nutzt einen absoluten Pfad für die script.cfg im Python-Skript oder du wechselst vor der Ausführung des Skripts mit cd in das Verzeichnis, in dem das Skript liegt.

ja genau so denke ich mir das. Gretchenfrage ist jetzt, wie kriege ich das entweder mit der rc.local oder dem cron hin. Wie wäre mir egal, Endprodukt soll ja sein, dass dieses Programm beim boot richtig startet.

Gibts dafür eine kryptische Syntax, mit der ich den absoluten Pfad eintragen muss? So wie oben beschrieben gehts jedenfalls nicht.

Oder mache ich ggf. zwei crontabs davon 1. einer, der ins Verzeichnis wechselt cd /verzeichnis und dann noch einen mit dem startbefehl python blahblah. wäre das ein funktionirender Weg?

cu der Buschmann

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11243

Wohnort: München

Wenn du den Pfad für die script.cfg im Python-Skript nicht direkt ändern willst, kannst du den Aufruf z.B. so machen:

/bin/bash -c 'cd /home/user/verzeichnis/; python /home/user/verzeichnis/script.py start -arg' 

Alternativ kann man auch eine ordentliche Systemd-Unit mit passend gesetztem WorkingDirectory schreiben - der Weg über die rc.local ist ein Relikt von SysV-Init.

buschmann

(Themenstarter)

Anmeldungsdatum:
20. Januar 2010

Beiträge: 314

jo, danke, das wars.

das hat geholfen, jedenfalls startet das programm jetzt.

Antworten |