Script ausführen mit systemd oder Autostart

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich habe auf ein älteres Netbook Raspi-OS (Debian11) installiert, da ich auf ein 32-bit System angewiesen bin.

    Raspi-OS und OSMC setze ich seit Jahren für meine Raspis ein.

    Leider wird das vorhandene Synaptics Touchpad nicht automatisch unterstützt.

    Mit einem entsprechenden Konsolenbefehl funktioniert dieses aber.

    Die restliche Hardware wird dagegen sehr gut unterstützt und funktioniert einwandfrei.

    Habe mir nun eine Scriptdatei erstellt, und diese unter /home/user/bin/touchpad.sh abgelegt.

    Ich wollte über systemd starten, deshalb liegt unter /etc/systemd/system/touch.service.

    Leider funktioniert die Sache nicht, habe auch schon versucht mit Autostart das Script zu starten, leider auch ohne Erfolg.

    Das Script kann ich per Doppelklick ausführen, das Touchpad ist dann auch aktiviert.

    Einmal editiert, zuletzt von Omegator (2. Dezember 2022 um 09:05)

  • Die ganzen Input-Devices werden beim Start des X-Windows Systems neu definiert.

    Als Abhängigkeit Deines Touchpad-Scripts käme beispielsweise das grafical.target bzw. das display-manager.service in Betracht.

    Als autostart des angemeldeten Users im Grafiksystem wäre aber die einfachste Art.


    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (30. November 2022 um 10:36)

  • Hallo zusammen,

    vielen Dank für die Rückmeldungen, ich hatte leider noch keine Zeit mich zu melden.

    Hier mal der Inhalt der beiden Dateien:

    unter /home/user/bin liegt die touchpad.sh

    Bash
    #!/bin/sh
    
    xinput set-prop "Touchpad_Device_Name" "libinput Tapping Enabled" 1

    und unter /etc/systemd/system liegt die touch.service

    Code
    [Unit]
    Description=Enable Touchpad
    After=default.target
    
    [Service]
    # Start main service
    ExecStart=/home/user/bin/touchpad.sh
    
    [Install]
    WantedBy=display-manager.service

    Ich kann die .service aktivieren, aber nicht starten:

    Code
    systemctl enable touch.service
    systemctl start touch.service

    Das sieht dann so aus:

    Code
    systemctl start touch.service
    Job for touch.service failed because the control process exited with error code.
    See "systemctl status touch.service" and "journalctl -xe" for details.

    und so:

  • Hallo,

    die Fehlermeldung besagt, dass der Xserver zum Zeitpunkt des Starts der Unit (noch) nicht läuft.

    Probier' mal `After=graphical.target systemd-user-sessions.service` und `WantedBy=graphical.target`

    Warum packst du die Konfiguration nicht in eine Konfigurationsdatei für den XServer, die wird immer zur richtigen Zeit geladen.

    Gruß, noisefloor

  • Hallo,

    habe die Änderungen eingepflegt, leider kommen immer noch Fehlermeldungen, wenn ich den Status abfrage. Enable und Start laufen in der Konsole normal durch.

  • habe die Änderungen eingepflegt, ...

    Dann solltest Du das hier auch zeigen:

    Code
    systemctl cat touch

    BTW: Ein anderer Name für deine service-unit wäre evtl. "schöner" gewesen, denn:

    Code
    :~ $ which touch
    /usr/bin/touch

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hier die Ausgabe:

    ich habe es jetzt nicht ganz verstanden, gibt es "touch" schon anderweitig?

    Umbenennen wäre jetzt kein Problem...

  • ich habe es jetzt nicht ganz verstanden, gibt es "touch" schon anderweitig?

    Nein, wahrscheinlich nicht. Du kannst ja schauen:

    Code
    systemctl list-units --type=service | grep -i touch

    Ich würde die service-unit trotzdem nicht als touch benennen, wenn es keinen Bezug zu /usr/bin/touch gibt (so wie das z. B. bei ssh der Fall ist).

    BTW: Dein Script hat eine sh-shebang und ausführen willst Du es mit der bash. OK, kann man machen, aber ...

    Startet deine service-unit dein Script, wenn Du die deaktivierte service-unit 30 Sekunden nach dem booten _manuell_ ausführst? Wenn ja und das für dich OK ist, kannst Du die deaktivierte service-unit, auch mit einer timer-unit starten.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Nein, wahrscheinlich nicht. Du kannst ja schauen:

    Code
    systemctl list-units --type=service | grep -i touch

    Ich würde die service-unit trotzdem nicht als touch benennen, wenn es keinen Bezug zu /usr/bin/touch gibt (so wie das z. B. bei ssh der Fall ist).

    BTW: Dein Script hat eine sh-shebang und ausführen willst Du es mit der bash. OK, kann man machen, aber ...

    Startet deine service-unit dein Script, wenn Du die deaktivierte service-unit 30 Sekunden nach dem booten _manuell_ ausführst? Wenn ja und das für dich OK ist, kannst Du die deaktivierte service-unit, auch mit einer timer-unit starten.

    Hebe jetz mal "touch" in"touchp" umbenannt.

    Im Script habe ich

    Bash
    #!/bin/sh

    in

    Bash
    #!/bin/bash

    umbenannt.

    Leider ändert sich gar nichts, auch nach einem Neustart nicht.

  • Leider ändert sich gar nichts, auch nach einem Neustart nicht.

    Und wie schaut es mit manuellem starten der service-unit, 1 Minute nach dem erfolgreichen booten deines PIs, aus?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Wenn ich eine Minute warte, und per Konsole (root) mit systemctl start touch.service starte, läuft das ohne Rückmeldung durch.

    Das Touchpad funktioniert danach aber immer noch nicht.

    Erst wenn ich das Script per Doppelklick, oder Konsole ausführe, funktioniert es.

  • Wenn ich eine Minute warte, und per Konsole (root) mit systemctl start touch.service starte, läuft das ohne Rückmeldung durch.

    Das Touchpad funktioniert danach aber immer noch nicht.

    Erst wenn ich das Script per ... Konsole ausführe, funktioniert es.

    Das ist der Beweis, dass deine service-unit fehlerhaft ist.

    EDIT:

    Wie ist die Ausgabe von:

    Code
    systemctl status touchp --full --no-pager

    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hier die Ausgabe:

  • Hier die Ausgabe:

    Code
    Dez 02 14:58:31 raspberry bash[1918]: Unable to connect to X server
    Dez 02 14:58:31 raspberry systemd[1]: touchp.service: Main process exited, code=exited, status=1/FAILURE
    Dez 02 14:58:31 raspberry systemd[1]: touchp.service: Failed with result 'exit-code'.

    Dann stehen bei Ausführung mit Hilfe der service-unit, auch "spät" nach dem booten, die Ressource bzw. die erforderliche Umgebung nicht zur Verfügung. Jetzt geht es darum, zu wissen was das ist bzw. wie es in der service-unit zugänglich gemacht wird.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!