Befehl im Hintergrund ausführen mit GUI

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
385
tach,

ich logge mich per ssh im raspberry pi ein möchte dort den browser mit

Code:
DISLAY=:1 firefox-esr <url> &

starten. das geht auch, wenn ich eine vnc-verbindung aufbaue, startet firefox. das & sollte doch eigentlich den befehl im hintergrund weiterlaufen lassen, oder? wenn ich aber das terminalfenster mit der ssh-verbindung beende, geht auch firefox zu. außerdem sollten keine meldungen mehr erscheinen, wenn das fenster noch offen ist. bei mir kommt aber:

Code:
pi@raspberrypi:~ $ DISPLAY=:1 firefox-esr <url> &
[1] 13561
pi@raspberrypi:~ $ [GFX1-]: No GPUs detected via PCI
[GFX1-]: glxtest: process failed (received signal 11)

was die 2. zeile aussagt weiß ich nicht, evtl. die prozess-id. dann kommt der eingabe-prompt und kurz danach beginnt wieder die ausgaben von firefox. eigentlich sollte doch ein prozess im hintergrund keine ausgaben mehr bringen.
 
FatManStanding schrieb:
das & sollte doch eigentlich den befehl im hintergrund weiterlaufen lassen, oder?
Ja, allerdings als Kind Prozess der aktiven Shell. Sobald die Shell beendet wird (Schließen der SSH Shell), werden logischerweise auch alle Kind Prozesse beendet. Hintergrundprozesse schreiben trotzdem auf stderr und stdout wenn nicht gepiped.
Ergänzung ()

FatManStanding schrieb:
was die 2. zeile aussagt weiß ich nicht
Erster Teil ist die Job-ID, zweiter Teil die Prozess ID. Mit der Job ID kannst du Jobs z.B. wieder in den Vordergrund bringen mit fg %1. Mit der Prozess ID z.B. den Prozess mit kill -9 13561 beenden.
 
Alternativ sollte eigentlich auch der Befehl "disown" dir helfen können, wenn du ihn direkt nach dem Firefox-Befehl eingibst.

Bzw. in einer Zeile:
Code:
DISLAY=:1 firefox-esr <url> & disown
 
ev wäre da ein systemd-service ideal in dem der befehl drin steht. dann lässt sich das mit start/stop erledigen und die terminal session beenden.

ist im grunde nicht schwieriger als eine *.desktop datei zu erstellen und in den autostart ordner zu legen:
https://www.howtogeek.com/devops/how-to-add-your-own-services-to-systemd-for-easier-management/

unter ExecStart=/path/to/executable [options] kommt der Befehl rein.

so schauts dann aus: https://stackoverflow.com/questions/70032742/start-fullscreen-firefox-from-linux-service

INI:
[Unit]
Description=Service running firefox
After=network.target

[Service]
Type=simple
User=me
Environment="DISPLAY=:1"
ExecStart=/usr/bin/firefox --new-window /usr/local/src/index.html
Restart=on-failure
RestartSec=1
TimeoutSec=60
RuntimeMaxSec=infinity

[Install]
WantedBy=multi-user.target
 
Zuletzt bearbeitet:
Zurück
Oben