staging.inyokaproject.org

systemctl: Dienst für eine GUI-Anwendung starten und stoppen

Status: Ungelöst | Ubuntu-Version: Kubuntu 20.04 (Focal Fossa)
Antworten |

michahe

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Hallo,

für den Kartenleser einer GUI - Banking-Anwendung benötige einen Dienst, den ich per

1
$ sudo systemctl enable meinDienst

oder

1
$ sudo systemctl enable --now meinDienst 

dauerhaft starten könnte; so funktioniert es auch nach Neustart des PC.

(Wie) könnte ich den Dienst um die GUI-Anwendung herum starten und stoppen, ohne der GUI-Anwendnug root-Rechte zuzugestehen? Im Prinzip möchte ich in / für eine .desktop-Datei so etwas:

1
2
3
4
$ sudo systemctl start meinDienst   # Starte den Dienst
$ cd /opt/jameica
$ ./jameica.sh                      # Starte Jameica / HIBISCUS und warte auf Schließen
$ sudo systemctl stop meinDienst    # Stoppe den Dienst

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: Zähle...

Schau dir bitte mal systemd/User Units an.

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5077

Muss der Dienst mit root-Rechten laufen? Falls nicht, kannst du den systemd service pro user konfigurieren und starten.

EDIT: Was sh4711 sagt ☺

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Danke, aber ich verstehe Euch nicht:

UserUnits sagt, dass die Units nicht beim Systemstart mit gestartet werden, sondern erst wenn der Nutzer, für den die Unit aktiviert ist, sich auf dem System anmeldet. Ich habe (und will) aber keinen extra User für die Banking-Anwendung. Dann hilft mir doch die UserUnit nicht, oder?

Muss der Dienst mit root-Rechten laufen?

$ systemctl start meinDienst

funktioniert, fragt aber nach einer Legitimierung "erweiterte Rechte".

Wäre folgende Zeile in einer .desktop OK:

Exec= systemctl enable meinDienst && systemctl start meinDienst && /opt/jameica/jameica.sh  && systemctl stop meinDienst && systemctl disable meinDienst
  • Würde so jameica / Hibiscus ohne root-Recht laufen?

  • Würde so stop / disable auf die Beendigung von jameica / Hibiscus warten?

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5077

michahe schrieb:

Danke, aber ich verstehe Euch nicht:

UserUnits sagt, dass die Units nicht beim Systemstart mit gestartet werden, sondern erst wenn der Nutzer, für den die Unit aktiviert ist, sich auf dem System anmeldet. Ich habe (und will) aber keinen extra User für die Banking-Anwendung. Dann hilft mir doch die UserUnit nicht, oder?

Du brauchst ja keinen separaten User, es reicht ja der aktuell aktive User.

Muss der Dienst mit root-Rechten laufen?

$ systemctl start meinDienst

funktioniert, fragt aber nach einer Legitimierung "erweiterte Rechte".

Das heisst nur, dass meinDienst eine System Unit ist, nicht, dass sie auch eine system unit sein muss. Wir kennen deinen meinDienst nicht.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 655

michahe schrieb:

... Wäre folgende Zeile in einer .desktop OK:

Exec= systemctl enable meinDienst && systemctl start meinDienst && /opt/jameica/jameica.sh  && systemctl stop meinDienst && systemctl disable meinDienst
  • Würde so jameica / Hibiscus ohne root-Recht laufen?

  • Würde so stop / disable auf die Beendigung von jameica / Hibiscus warten?

Teste es am besten wie in deinem ersten Post Schritt für Schritt im Terminal. Dann bekommst du etwaige Fehlermeldungen direkt mit. Und wenn alles läuft bau es in deine exec-Anweisung.

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Danke! sebix schrieb:

Muss der Dienst mit root-Rechten laufen?

$ systemctl start meinDienst

funktioniert, fragt aber nach einer Legitimierung "erweiterte Rechte".

Das heisst nur, dass meinDienst eine System Unit ist, nicht, dass sie auch eine system unit sein muss. Wir kennen deinen meinDienst nicht.

meinDienst ist pcscd für den Kartenleser

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

Wie) könnte ich den Dienst um die GUI-Anwendung herum starten und stoppen, ohne der GUI-Anwendnug root-Rechte zuzugestehen?

Per se ist systemd nicht für die Interaktion mit GUI Anwendungen bzw. der Desktop Umgebung gemacht. systemd regelt den Systemstart mit bzw. auch, wenn ein Nutzer sich einloggt.

Was spricht denn dagegen, dass der Kartenleser gestartet wird, wenn der Nutzer sich einloggt. Also egal, ob Jameica danach genutzt wird oder nicht. Bzw. welchen Vorteil siehst du, wenn der Kartenleser nur laufen würde, wenn Jameica läuft?

Gruß, noisefloor

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 789

Danke noisefloor,

Wie) könnte ich den Dienst um die GUI-Anwendung herum starten und stoppen, ohne der GUI-Anwendnug root-Rechte zuzugestehen?

Per se ist systemd nicht für die Interaktion mit GUI Anwendungen bzw. der Desktop Umgebung gemacht. systemd regelt den Systemstart mit bzw. auch, wenn ein Nutzer sich einloggt.

Was spricht denn dagegen, dass der Kartenleser gestartet wird, wenn der Nutzer sich einloggt.

Im Grund nichts, dann läuft der Dienst faktisch immer. Es gibt auf diesem Rechner einen Nutzer (ich) und der ist eingeloggt, wenn der Rechner läuft (100 Stunden pro Woche). Ich "dachte", es sei "sauberer", den Dienst nur bei Nutzung der Banking-Anwenung (0,5 Stunden pro Woche) zu aktivieren.

Also welche Variante:

Exec= systemctl enable pcscd && systemctl start pcscd && /opt/jameica/jameica.sh  && systemctl stop pcscd && systemctl disable pcscd

oder

$ sudo systemctl enable --now meinDienst   # einmalig
Exec= /opt/jameica/jameica.sh

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

weder noch, sondern die besagte systemd User Unit. Es spricht absolut nichts dagegen, wenn ein (weiterer) Dienst, nämlich der für den Kartenleser, im Hintergrund idlet, wenn du den Kartenleser nicht im Betrieb hast. Damit kommt das System klar und das wirst du ziemlich sicher bei Ressourcenverbrauch nicht merken.

Gruß, noisefloor

Antworten |