Ich habe eine GUI-App geschrieben, die auf einem Raspi4 unter Raspian mittels Autostart-Option gleich nach dem Boot loslaufen soll. Das habe ich mit einem Eintrag in: sudo nano /etc/xdg/lxsessions/LXDE-pi/autostart (Enter) und @/home/userfolder/filefolder/appfolder/appname getan. Den Eintrag gibts auch definitiv nur einmal. Prinzipiell funktioniert das auch, aber: Wenn ich die automatisch gestartete App (nach einem Neustart, z.B. mit sudo reboot) über einen in der GUI enthaltenen Button beenden will, muss ich das jedesmal 6 mal tun, bis endlich "Ruhe" ist, so oft verschwindet und öffnet sich das Fenster der App immer wieder. Starte ich die App jedoch manuell per Doppelklick, genügt ein einmaliges Beenden per Button. An der App liegt es also wahrscheinlich nicht. Es gibt zwar Schlimmeres, stört mich aber schon irgendwie. Was könnte die Ursache sein?
Frank E. schrieb: > Was könnte die Ursache sein? Da bei Linux der Code of Cunduct mittlerweile wichtiger sind, als die Qualität des Codes, scheint das Autostartverzeichnis mehrfach durchlaufen zu werden. Hänge mal vorne dran ein Script, das prüft, ob der Prozess schon online ist. Mit so einem Befehl, wie diesen, prüfe ob die Anwendung wirklich 6x offen ist.
1 | ps ax | grep xfce4-d |
2 | 657187 tty1 Sl 0:01 xfce4-display-settings -m |
3 | 658752 tty1 Sl 0:01 xfce4-display-settings -m |
4 | 660926 pts/3 S+ 0:00 grep --color=auto xfce4-d |
Frank E. schrieb: > @/home/userfolder/filefolder/appfolder/appname Frank E. schrieb: > Wenn ich die automatisch gestartete App (nach einem Neustart, z.B. mit > sudo reboot) über einen in der GUI enthaltenen Button beenden will, muss > ich das jedesmal 6 mal tun Genau dieses Verhalten (beim Beenden neu starten) forderst Du mit dem @ davor explizit an. Dieter D. schrieb: > Da bei Linux der Code of Cunduct mittlerweile wichtiger sind, als die > Qualität des Codes Nimm Deine Tabletten, Dummschwätzer.
Hmmm schrieb: > Genau dieses Verhalten (beim Beenden neu starten) forderst Du mit dem @ > davor explizit an. Ok, danke, das wars. Die Funktion des "@" war mir nicht geläufig. Gut zu wissen, wenn man es einmal braucht. > Nimm Deine Tabletten, Dummschwätzer. Na na, nicht so böse. Das hätte man auch anders schreiben können.
Frank E. schrieb: > Es gibt zwar Schlimmeres, stört mich aber schon irgendwie. Was könnte > die Ursache sein? Die Ursache ist, dass du das so angegeben hast. > @/home/userfolder/filefolder/appfolder/appname Das vorangestellte @ sagt dem System, dass das Programm automatisch neu gestartet werden soll, wenn es aus irgendeinem Grund beendet wurde. Vermutlich gibt dein LXDE nach 5 erfolglosen Neustart-Versuchen dann auf. Siehe z.B. https://wiki.ubuntuusers.de/Autostart/#Lubuntu-LXDE Dieter D. schrieb: > Da bei Linux der Code of Cunduct mittlerweile wichtiger sind, als die > Qualität des Codes, scheint das Autostartverzeichnis mehrfach > durchlaufen zu werden. Was hat das Autostart von LXDE mit dem Kernel zu tun?
Frank E. schrieb: > Na na, nicht so böse. Das hätte man auch anders schreiben können. Schwurbeldieter hat leider bei jedem Linux-Problem das zwanghafte Bedürfnis, vom Code of Conduct zu faseln. Scheint ihn sehr zu wurmen, dass auch unter Linux-Entwicklern Rassismus, Sexismus & Co. unerwünscht sind.
Auch wenn nicht wirklich "sauber" nutze ich dafür meist einen Cronjob der mir beim reboot (via @reboot) ein Programm startet. Nun steinigt mich :-D
Ein cron-Job ist ok, aber nicht so arg gut geeignet für Programme, die auf dem Desktop laufen sollen.
Frank E. schrieb: > Na na, nicht so böse. Das hätte man auch anders schreiben können. Da hast Du recht. Er schießt immer so über das Ziel hinaus. Auf Kritik am CoC reagiert er überempfindlich. Rolf M. schrieb: > Was hat das Autostart von LXDE mit dem Kernel zu tun? Das war ein Beispiel, wie der TO den Namen seiner Routine eingeben müßte, um zu schauen, ob der Prozess mehrfach vorhanden sein sollte. Wenn dieser nur einmal da wäre, müßte man suchen. Auf den Klammeraffen hatte ich auch nicht geachtet. Beim xfce gibt es den Fehler, das der Prozess alle Stunde neu aufgerufen wird. Daher vermehrt sich dieser. Ein Fehler, der 2014 und 2019 ähnlich war. https://forums.debian.net/viewtopic.php?t=156364
Frank E. schrieb: > Ich habe eine GUI-App geschrieben, die auf einem Raspi4 unter Raspian > mittels Autostart-Option gleich nach dem Boot loslaufen soll. Das habe > ich mit einem Eintrag in: > >
1 | > sudo nano /etc/xdg/lxsessions/LXDE-pi/autostart (Enter) |
2 | > |
> > und > >
1 | |
2 | > @/home/userfolder/filefolder/appfolder/appname |
3 | > |
Diese Sache mit dem @-Präfix hat Dir hmmm bereits erklärt, daher möchte ich nur auf einige andere Möglichkeiten hinweisen. Wenn Du die Applikation über /etc/xdg/lxsessions/LXDE-pi/autostart startest, wird sie als Benutzer "root" mit all seinen Privilegien gestartet. Da das in der Regel aus Sicherheitsgründen keine sonderlich gute Idee ist, existieren mehrere Möglichkeiten, um das zu verhindern: Zunächst kannst Du das Programm als Benutzer-Autostart einrichten. Damit wird es in der Datei
1 | /home/<username>/.config/lxsession/LXDE/autostart |
(für de RasPi könnte es notwendig sein, daß das Verzeichnis "LXDE" stattdessen "LXDE-pi" heißen muß) eingetragen und gestartet, sobald sich der betreffende Benutzer einloggt, für den es konfiguriert ist, auch mit Autologin. Wenn ein anderer Benutzer sich einloggt, für den der Programmstart nicht konfiguriert ist, wird das Programm auch nicht gestartet. Oder wenn das Programm zwar für jeden Benutzer gestartet werden, aber unter einer bestimmten Benutzer-Id laufen soll, sind die Befehle
1 | su <userid|username> -c '/home/userfolder/filefolder/appfolder/appname' |
oder
1 | sudo -u <userid|username> /home/userfolder/filefolder/appfolder/appname |
(Bitte beachte die Feinheit mit den Quotes.) Wenn das Programm bei der Initialisierung jedoch Dinge tun muß, die einem privilegierten Benutzer vorbehalten sind, kann es nach der Initialisierung mit den Systembefehlen set[res]?uid(2) undset[res]?gid(2) den Kernel anweisen, mit den dabei angegebenen Benutzer- und Gruppenids weiterzuarbeiten. Wenn Du keinen kompletten Desktop brauchst, sondern nur dieses eine Programm immer Fullscreen (sog. "Kiosk-Modus") laufen lassen willst, dann kannst Du es mit einem minimalen Windowmanager verwenden und Dein Programm als direkten X-Client laufen lassen. Dann läuft unter X wirklich nur dieses eine Programm -- auch in diesem Falle gilt das oben zu den Privilegien Gesagte. Ich hätte dazu ein Beispiel, mußte allerdings eben feststellen, daß das schon zehn Jahre alt, weder an systemd noch an andere Entwicklungen der Linuxwelt angepaßt worden und daher ohne Anpassungen vermutlich kein hilfreiches Beispiel mehr ist. Dennoch wollte ich die Möglichkeit der Vollständigkeit halber erwähnen. Viel Spaß und Erfolg bei Deinem Projekt! :-)
Dieter D. schrieb: > Auf Kritik am CoC reagiert er überempfindlich. Der Code of Conduct schreibt allerdings nur vor, was unter erwachsenen und vernunftbegabten Menschen ohnehin selbstverständlich ist, nämlich, sich wie ein verantwortungsvolles Mitglied einer Gemeinschaft zu verhalten. Wer das kritisiert, sagt damit etwas sehr, sehr Häßliches über sich selbst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.