Forum: PC-Programmierung Autostart start.py geht nicht :-(


von epikao (Gast)


Lesenswert?

Hallo wieder,

es ist unglaublich wieviel stunden man an so scheinbar "einfachen" 
Aufgaben verlieren kann:

Ich verzweifle gerade mein Python Programm nach dem booten automatisch 
zu starten, was ich schon versucht habe:

mein Programm.py liegt unter /home/pi/ und heisst "start.py"

ein Eintrag per nano im /etc/rc.local

/bin/sleep 15  && /home/pi/start.py &

GEHT NICHT (auch ohne sleep, ps -ef | grep python => ohne resultat)

DANN:

im LXDE
@python /home/pi/start.py

GEHT NICHT


DANN:

mit "sude nano crontab -e"

eintrag @reboot sudo python /home/pi/start.py

GEHT NICHT

:-(

von Rolf Magnus (Gast)


Lesenswert?

Geht's hier immer noch um deinen Bildergucker?

epikao schrieb:
> ein Eintrag per nano im /etc/rc.local
>
> /bin/sleep 15  && /home/pi/start.py &
>
> GEHT NICHT (auch ohne sleep, ps -ef | grep python => ohne resultat)

Wundert mich nicht. Wenn es ein grafisches Programm ist, findet es so 
seinen X-Server nicht. Davon abgesehen wird es als root gestartet. Das 
kann man für Systemdienste und so benutzen, aber nicht für Programme, 
die auf der graphischen Oberfläche des eingelogten Users laufen sollen.

> DANN:
>
> im LXDE
> @python /home/pi/start.py
>
> GEHT NICHT

Was das genau bedeutet, weiß ich nicht. Kenne mich mit LXDE nicht aus.
Hast du mal das probiert:

https://wiki.ubuntuusers.de/LXDE_Einstellungen/#Autostart-und-Sitzungseinstellungen-Default-application-for-LXSession-und-LXSession-edit
Bzw. das:
https://wiki.ubuntuusers.de/LXDE_Einstellungen/#Autostart-manuell-bearbeiten


>
> DANN:
>
> mit "sude nano crontab -e"
>
> eintrag @reboot sudo python /home/pi/start.py
>
> GEHT NICHT
>
> :-(

Gleiches Thema wie beim ersten Versuch. Da crontab das Skript nicht von 
X aus startet, fehlt die DISPLAY-Variable, und das Programm findet den 
X-Server nicht. Da du es auch noch mit sudo gemacht hast, wird es 
ebenfalls wieder als root ausgeführt.

von epikao (Gast)


Lesenswert?

äh nicht "sudo nano crontab -e"
sondern
crontab -e

dann Eintrag:

eintrag @reboot sudo python /home/pi/start.py

GEHT NICHT

von Rolf Magnus (Gast)


Lesenswert?

epikao schrieb:
> eintrag @reboot sudo python /home/pi/start.py

Dein Skript wird aber trotzdem in sudo ausgeführt. Warum? Abgesehen 
davon wird das zu früh ausgeführt. Da ist die graphische Oberfläche noch 
gar nicht gestartet.

von epikao (Gast)


Lesenswert?

das start.py Programm sieht so aus:

#!/usr/bin/env python

import os
from time import sleep
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(13, GPIO.IN)
GPIO.setup(15, GPIO.IN)

while 1:
        if GPIO.input(13) == False:
                   from subprocess import call
                   call(["./main.sh"])
        sleep(0.1);


normal funktioniert das Programm ... aber autostarten nicht :-(

von epikao (Gast)


Lesenswert?

Rolf Magnus schrieb:
> Dein Skript wird aber trotzdem in sudo ausgeführt. Warum? Abgesehen
> davon wird das zu früh ausgeführt. Da ist die graphische Oberfläche noch
> gar nicht gestartet.

sudo? keine Ahnung dann bin ich sicher das es nicht an irgendwelchen 
blöden Rechten scheitert...

ok. und wie schaue ich das es erst startet wenn die GUI da ist? mit 
sleep? wohl kaum...

von Stephan G. (Firma: privat) (morob)


Lesenswert?

schon mal im syslog nach fehlern geschaut?

von Dirk D. (dicky_d)


Lesenswert?

Soweit ich weiß funktioniert @reeboot nur in der /etc/crontab, nicht in 
den user-crontabs.
sudo als root ist auch sinloß, lass das mal weg.
dann schau nach dem booten, wie morob schon gesagt hat, mal ins syslog, 
da sollte stehen was sache ist.

von Stephan G. (Firma: privat) (morob)


Lesenswert?

@reboot geht auch in user crontab.

von Mario M. (Gast)


Lesenswert?

Schreib mal call(["/home/pi/main.sh"])
Relative Pfade in Start-Scripts sind keine gute Idee.

von epikao (Gast)


Lesenswert?

Dirk D. schrieb:
> Soweit ich weiß funktioniert @reeboot nur in der /etc/crontab, nicht in
> den user-crontabs.

oh je :-( tönt kompliziert, wenn ich das crontab kommandozeile öffne ist 
ein anderer Eintrag drin, als wenn ich Sie per GUI öffne...

:-(

von epikao (Gast)


Lesenswert?

und mit der GUI ist es egal was man für Rechte vergibt einfach nicht 
möglich die crontab Datei zu ändern..

Und mit Kommandozeile wird eine andere crontab geöffnet.
Zum kotzen...

muss ich mich noch mit Benutzer auseinandersetzen?? Wie wechsle ich per 
kommandozeile zum root User? phuu

von epikao (Gast)


Lesenswert?

wenn ich crontab -e eingebe, öffnet sich was, aber es scheint im tmp/ 
ordner zu sein...

von Thorsten Legat (Gast)


Lesenswert?

epikao schrieb:
> muss ich mich noch mit Benutzer auseinandersetzen?? Wie wechsle ich per
> kommandozeile zum root User? phuu

logout dürfte da weiterhelfen.

oder mal per Alt+F2...6 zu einer frischen Konsole wechseln und da 
einloggen.

haste mal mit chmod+x ausführbar gemacht?

die crontab wirste aufkriegen, wenn du zb. kate per sudo aufrufst.

von epikao (Gast)


Lesenswert?

ich blicke bei den crontab gerade nicht durch...

wenn ich crontab -e eingebe, wird eine eigene crontab im tmp/ Ordner 
erstellt... kann das überhaupt funktionieren?

Und wieso bin ich wenn ich raspberry starte und keine Benutzerlogin 
kommt, nicht automatisch root?

und chmod +x alles schon gemacht :-((((((

und wie syslog funktioniert finde ich per google gerade nicth raus... 
ist sehr mühselig!

von Mario M. (Gast)


Lesenswert?

> wenn ich crontab -e eingebe, wird eine eigene crontab im tmp/ Ordner
> erstellt... kann das überhaupt funktionieren?

Normal. Beim Bearbeiten wird eine temp. Datei genutzt, beim Speichern 
die Datei geprüft und falls fehlerfrei in die crontab übernommen.


> Und wieso bin ich wenn ich raspberry starte und keine Benutzerlogin
> kommt, nicht automatisch root?

Klar bist Du root. Was denn sonst, wenn kein Nutzer eingeloggt ist.

Und schreibe in Deinem Script in den call-Aufruf den vollen Pfad, also 
"/home/pi/main.sh".

von K. J. (Gast)


Lesenswert?

Moin erstmal @reboot in der crontab geht nur bei Ubuntu, oder RH und 
beim vixi Cron.

Start der Skript Datei teste mal "#!/usr/bin/python", der Eintrag mit 
ENV geht nur wen es in $PFAD gesetzt ist crontabs benutzen standardmäßig 
/usr/bin/sh nicht /usr/bin/bash

Oben schon genant ist die Datei ausführbar ?

Wird sie nicht gestartet oder macht sie Fehler beim starten und läuft 
deshalb nicht, entweder du schaust mal in die Crontab mails oder wenn du 
die nicht hast leite die ausgaben in eine Textdatei um:

"/home/pi/start.py > /bla/blub.txt 2>&1"

von epikao (Gast)


Lesenswert?

also........ autostart vom python script funktioniert, aber nicht das 
starten von feh. (da dass feh nie gestartet hat, hatte ich übersehen das 
die scripts doch reagieren)


start.py ist in der crontab eingetragen,

dieser ruft main.sh auf,
da drin steht:

feh -D 3 /home/pi/Desktop/Pictures/1920x1080/ & /home/pi/main.py


die main.py wird ausgeführt (darin steht was mousemove wenn Taster 
betätigt) ... also das funktioniert, bzw. der Mauszeiger bewegt sich 
dann - ABER eben mit feh geschieht nichts...

schwierig

von epikao (Gast)


Lesenswert?

habs herausgefunden :-)

um feh automatisch auszuführen, brauchts vorher export DISPLAY=:0.0

:-)) Danke für alle Tips

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.