Python Skript per Autostart ausführen

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Theynk
User
Beiträge: 22
Registriert: Donnerstag 8. März 2018, 14:20

Das heißt ich muss um das zu probieren die System-Unit löschen den Eintrag in rc.local löschen und dann das mit der Methode von Sirius machen?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Auch system unit und rc.local sind unabhängige Methoden. Das ist nicht wie beim Hochalpinklettern, wo man sich mehrfach sichert. Ein Mechanismus reicht. Und das ist kein ästhetisches Argument — mehrfach das gleiche Programm zu starten kann zu gegenseitiger Beeinflussung führen. Und die dann abbrauchen oder schlimmer noch subtiles Fehlverhalten auslösen.
Theynk
User
Beiträge: 22
Registriert: Donnerstag 8. März 2018, 14:20

ja gut verstehe ich aber es hat ja auch einzeln nicht funktioniert und ich dachte ich kann die systemunit per rc.local warten lassen. Das war da oben ja auch meine Frage. Ok heißt für mich nochmal komplett von vorne anfangen richtig?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie willst du denn die unit warten lassen durch die rc.local? Die haben doch keinen Einfluss aufeinander :K und wenn die rc.local weiß wann’s losgeht, dann kann sie doch gleich das Programm starten?!?!

Entfern das alles. Und ja, fang neu an. Wenn du kannst, krieg raus wie dein OS genau heisst. Wie dein Windomanager genau heißt. Wie der autostart macht. Es KANN sein das es da Standards gibt, aber je mehr Infos du zusammenträgst und je spezifischer du suchst und fragst desto größer die Chance auf Erfolg.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Also nochmal die richtige URL: https://webnist.de/autostart-eines-pyth ... pberry-pi/
Das ist die Methode, um Grafikprogramme zu starten. Systemd oder init.rc sind halt da, um Dienste zu starten, die nicht mit dem User direkt interagieren.
Theynk
User
Beiträge: 22
Registriert: Donnerstag 8. März 2018, 14:20

Genau das war ja weiter oben meine Frage, da mir das schon komisch vorkam das in der rc.local nicht den verweis auf die Unit mache. Ok ich bin ca in einer halben std zuhause dann gucke ich nach. Ich habe das Betriebssystem mit NOOBS aufgesetzt. Danach dann ein update und upgrade durchgeführt. Gibt es Befehle die mir direkt ausspucken, welches Betriebssystem, Windowmaker etc habe?

Ok ich lese mir das mal während der Fahrt durch besten Dank.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es heißt windowmanager.. ...

Noobs ist kein OS. Sondern ein Ding zum auswählen und dann installieren eines OS. Welches du gewählt hast wissen wir nicht.

Hier gibt es eine Reihe von Tipps wie man da Details erhält: https://unix.stackexchange.com/question ... stems-name
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und nochmal allgemeiner was zum autostart. Mit GUI. Wenn du Glück hast. https://wiki.ubuntuusers.de/Autostart/
Theynk
User
Beiträge: 22
Registriert: Donnerstag 8. März 2018, 14:20

also selbstverständlich habe ich dann Raspian installiert.
Mit dem Hinweis von Sirius hat es geklappt. Ich könnte fast sagen ich liebe dich :D
danke danke danke für eure ganze Hilfe ich war echt am verzweifeln.
ok danke werde ich mir durchlesen.
IHack
User
Beiträge: 14
Registriert: Dienstag 13. März 2018, 11:17

Du willst in dem Unit- File das "default.target".
Das ist meist Runlevel5, also das Bunte mit Netzwerk und vielen möglichen Benutzern.
Du willst explizit NICHT das reboot.target. Die Ausführung deines Scriptes (wenn es denn richtig für systemd konfiguriert wäre), würde solange verzögert, bis du die Kiste neu starten würdest. Das ist nicht in deinem Sinne.

Und dann hast du einen gewaltigen Denkfehler in deinem Ansatz.
Du möchtest ein Userland Script als Systemdienst starten.
Keine leichte Aufgabe und erst recht keine gute Idee.

Da dein Script Fenster malen will, braucht es ein laufendes DesktopEnvirionment (also ein Gnome, KDE, xfce....)
Das läuft unter einem User.
Also kein Systemdienst.
Und deshalb liest du auch nur Fehler.
Dein Script wird gerufen und möchte irgendwohin schreiben, was es nicht kann, da systemd deinem Script weder ein Display noch ein Terminal zugeordnet hat. Ende Gelände.

Systemd kann aber auch im Userland spielen.
Tatsächlich kann jeder User seine eigenen Services starten.
Da wärest du jetzt richtig.

Aber es ist viel einfacher dein Script im jeweiligen DesktopEnvironment auf die herkömmliche (und bereits empfohlene) Weise als normales "Autosstart" - Script zu rufen.

Wenn du es dennoch mit deinem Servicefile via systemd starten möchtest, melde dich einfach normal am DE an, und gib dann als User die Kommandos:

Code: Alles auswählen

systemd enable my.service
systemd start my.service
ein.

Das "enable" weist systemd an, diese Unit auch künftig nach jedem Boot zu starten,
und "start" tut, was es sagt.

Wenn du als User mit systemd dein Script rufst, wird es logischerweise auch nur gerufen, wenn genau dieser User sich anmeldet.
Es ist nicht so ganz klar, ob du das wirklich willst.

Aber klar ist, dass ein Script, das Fenster malt, sicher KEIN Systemdienst sein kann.
Antworten