Gui startet über Cronjob nicht

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
michpro
User
Beiträge: 19
Registriert: Samstag 27. Dezember 2014, 21:30

Hallo Forum,

habe ein kleines Problem mit meiner Gui Oberfläche, welche ich QT gestaltet habe. Über einen Cronjob starte ich nach dem booten folgendes Shell-Script.

Code: Alles auswählen

#! /bin/sh

#aktuelle Versionen kopieren
cp /ablage/nfs/pi/WrKuehl.py /home/pi
cp /ablage/nfs/pi/MainView.ui /home/pi
cp /ablage/nfs/pi/AnzeigeGui.py /home/pi

#starten von Steuerung und Visulaisierung
python3 /home/pi/WrKuehl.py
python3 /home/pi/AnzeigeGui.py

Die Kopieranweisungen benöige ich damit immer die aktuelle Version von dem gemappten Netzlaufwerk in das home Verzeichnis kopiert wird.
Das WrKuehl.py Script wird ornungsgemäß gestartet und läuft auch fehlerfrei.
Das AnzeigeGui.py startet jedoch nicht und das ist genau das was ich nicht verstehe. Gebe ich die Zeile "python3 /home/pi/AnzeigeGui.py" in der Kommandozeiele ein, wird die Gui Oberfläche gestartet und läuft auch.

Ich hoffe Ihr könnt mir da einen Rat geben.


Gruß michpro
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Kann es sein, dass `python3 /home/pi/WrKuehl.py` nicht beendet? Somit wird auch niemals die GUI ausgeführt.
the more they change the more they stay the same
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@michpro: die GUI braucht einen X-Server. Der muß also schon gestartet und per

Code: Alles auswählen

export DISPLAY=:0
auch registriert sein.
michpro
User
Beiträge: 19
Registriert: Samstag 27. Dezember 2014, 21:30

Dav1d hat geschrieben:Kann es sein, dass `python3 /home/pi/WrKuehl.py` nicht beendet? Somit wird auch niemals die GUI ausgeführt.
Das soll auch so sein, WrKuehl.py muss immer laufen. Sollte doch auch funktionieren. Wenn ich im Shell die Gui starte läuft das WrKuehl.py weiter.

Gruß michpro
michpro
User
Beiträge: 19
Registriert: Samstag 27. Dezember 2014, 21:30

Sirius3 hat geschrieben:@michpro: die GUI braucht einen X-Server. Der muß also schon gestartet und per

Code: Alles auswählen

export DISPLAY=:0
auch registriert sein.
hmmm... also der sollte doch laufen, da ich das Gui bei manueller Eingabe über das Eingabeshell starten kann und dort alles sauber angezeigt wird.

Gruß michpro
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@michpro: cronjobs haben von sich aus kein DISPLAY. Weil die Dinger sollen ja im Hintergrund laufen. Und wenn der Cronjob beim Booten anspringt, dann ist noch kein X-Server gestartet.
michpro
User
Beiträge: 19
Registriert: Samstag 27. Dezember 2014, 21:30

@Sirius3,

wenn ich das jetzt richtig verstanden habe muß dem crontab nach dem booten mitgeteilt werden dass er für seinen Aufruf ein Anzeige benötigt.
Ich habe jetzt in meiner Anweisungszeile direkt im Crontab folgendes geschrieben.

@reboot export DISPLAY=:0 python3 /home/pi/AnzeigeGui.py

leider ohne Erfolg.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@michpro: wie schon geschrieben, bei @reboot dürfte der X-Server noch nicht gestartet sein. Und es muß auch

Code: Alles auswählen

@reboot DISPLAY=:0 python3 /home/pi/AnzeigeGui.py
heißen.
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

Statt cron solltest du lieber die xsessionrc bemuehen - darin kannst du festlegen, was nach dem hochfahren & einloggen (aller Wahrscheinlichkeit nach automatisch bei dir) an GUI-Programmen gestartet wird. Zu einem frueheren Zeitpunkt macht das keinen Sinn - und AFAIK reicht auch nicht das reine hochgefahren-sein des X, wenn noch keine User-Session da ist (wohin soll sonst die Ausgabe gehen?!?)
michpro
User
Beiträge: 19
Registriert: Samstag 27. Dezember 2014, 21:30

@ __deets__
danke für den Tip, das sieht im ersten Anlauf nicht schlecht aus. Mein "Dauerlauf script" WrKuehl.py läuft und das AnzeigeGui.py wird auch aufgeblendet, wenn jedoch über alles andere darüber. Aktuell habe ich so noch keine Möglichkeit auf die "Taskleiste" zu kommen. Gibt es da irgendwelche Parameter, welche ich in dem Aufruf mitgeben kann, ob die Gui den kompletten Desktop benutzen soll, oder nur als zusätzliches Fenster, welches ich mit dem "Kreuz" rechts oben wieder schliessen kann.... Wie auch immer ich forsche malweiter und bedanke mich.

Gruß michpro
__deets__
User
Beiträge: 14540
Registriert: Mittwoch 14. Oktober 2015, 14:29

So ganz verstehe ich deine Problembeschreibung nicht, auch nicht, was du dir eigentlich wuenschst. Eine weiter Antwort haengt dann auch wahrscheinlich vom konkret verwendeten WindowManager ab, der da vielleicht bestimmte Dinge erwartet.
Antworten