systemd mein.service startet und beendet sich

  • BTW: Wenn es Probleme mit Abhängigkeiten in der user-unit gibt, evtl. auch mit:

    Code
    DefaultDependencies=no

    testen.

    Die zugänglichen targets für eine user-unit, kann man auch mit z. B.:

    Code
    systemctl --user list-units --type=target --all

    anzeigen lassen.

  • Ich habe nun die ursprüngliche Anleitung in #45 aktualisiert und die Unterschiede zwischen Lite- und Desktop-Systemen eingearbeitet.

    Bei der ganzen Testerei, insbesondere nun auf meinem frischen Lite-System, bin ich immer wieder darüber gestolpert, dass nachfolgende Tools/Scripte (noch) nicht existierten oder auf Fehler liefen, dies aber in den Logs von journalctl oder bei systemctl status --user ... nicht unbedingt sichtbar wurde.

    Es sah oft so aus, als würde die systemd-unit fehlerfrei gestartet, aber ohne sichtbare Erfolge gleich wieder beendet.
    Ohne sichtbare Fehlermeldungen ist man nahezu aufgeschmissen.

    Also ist es sehr sinnvoll, zuerst die aufgerufenen Programme bzw. deren Parameter usw. sorgfältig zu testen und erst dann in systemd einzubinden.
    Das ist zwar eigentlich logisch/klar, aber noch nie wurde mir das so deutlich wie bei diesem "Projekt".

    Edited 2 times, last by simonz (May 19, 2025 at 10:00 AM).

  • Die zugänglichen targets für eine user-unit, kann man auch mit z. B.:

    Code
    systemctl --user list-units --type=target --all

    anzeigen lassen.

    Das ist bei mir im Lite-System dann:

    Interessanterweise kommt beim ins multi-user.target gebootete Desktop-System dasselbe heraus und trotzdem lässt sich dort WantedBy=multi-user.target erfolgreich verwenden. :/ Also gibt es unter der Haube noch weitere Unterschiede zwischen den Systemarten...

  • Interessanterweise kommt beim ins multi-user.target gebootete Desktop-System dasselbe heraus und trotzdem lässt sich dort WantedBy=multi-user.target erfolgreich verwenden.

    In welchen runlevel booten deine Systeme (lite und Desktop)?

    Code
    who -r
    ls -l /lib/systemd/system/runlevel*

    ?

  • BTW: Du kannst auch anzeigen lassen ob bzw. welchen runlevel (target) deine service-unit bei der bzw. für die Ausführung, benötigt. Z. B.:

    Code
    systemctl --user show -p WantedBy werbung.service
  • In welchen runlevel booten deine Systeme (lite und Desktop)?

    Code
    who -r
    ls -l /lib/systemd/system/runlevel*

    Das Desktop-System ist Bullseye, das Lite Bookworm, ich hoffe, das ist hier nicht von Bedeutung.

    Bei beiden Systemen abgesehen vom jeweiligen Datum:

    Bash
             Runlevel 3   2025-05-19 09:21
  • BTW: Du kannst auch anzeigen lassen ob bzw. welchen runlevel (target) deine service-unit bei der bzw. für die Ausführung, benötigt. Z. B.:

    Code
    systemctl --user show -p WantedBy werbung.service

    Bei beiden Systemen

    Bash
    $ systemctl --user show -p WantedBy werbung.service
    WantedBy=default.target

    ... obwohl ja im Desktop -System steht:

    Code
    [Install]
    WantedBy=multi-user.target

    Ja, ich habe gelesen, dass default.target ein Link auf das "echte" aktuelle target ist. Man solle aber explizit das echte target bei WantedBy= angeben.

  • Genau das ist ja das komische hier: default.target ist ein Verweis auf ein echtes Target, ootb multi-user.target. Dieses Target ist erreicht, wenn das System einsatzbereit ist und sich mehrere Nutzer einloggen könnten. Das multi-user.target ist nicht an ein grafisches System gebunden.

    Deswegen ist das ganze hier noch ein bisschen mysteriös, warum wie was wo wann funktioniert (oder eben nicht).

    Gruß, noisefloor

  • Ja, ich habe gelesen, dass default.target ein Link auf das "echte" aktuelle target ist. Man solle aber explizit das echte target bei WantedBy= angeben.

    Schau mal auf deinen beiden Systemen (lite und Desktop), für --user und ohne --user nach, mit z. B.:

    Code
    systemctl --user list-dependencies default.target
    systemctl list-dependencies default.target
    systemctl --user status default.target  # bei loaded
    systemctl status default.target    # bei loaded
    ls -la /usr/lib/systemd/user/default.target
    file /usr/lib/systemd/user/default.target
    cat /usr/lib/systemd/user/default.target
    ls -la /usr/lib/systemd/system/default.target

    BTW: Bei deinem Desktop-System (für nicht bzw. ohne --user) sollte das default eigentlich so:

    Code
    :~$ systemctl get-default
    graphical.target

    , wegen:

    Code
    :~# ls -la /usr/lib/systemd/system/default.target
    lrwxrwxrwx 1 root root 16 Mar  6 15:56 /usr/lib/systemd/system/default.target -> graphical.target

    (oder gleichwertig) sein.

    Wi-Fi_Signal_Strength  txpower
    iptables chains order scheme iptables-diagram
    nftables-diagram

    Meine PIs

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

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

    PI4B/8GB Bookworm-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, Mumble-Server, botamusique, ample

    Edited once, last by rpi444 (May 19, 2025 at 11:29 AM).

  • Das Desktop-System ist Bullseye, das Lite Bookworm, ich hoffe, das ist hier nicht von Bedeutung.

    Bei beiden Systemen abgesehen vom jeweiligen Datum:

    Bash
             Runlevel 3   2025-05-19 09:21

    D. h. Du hast (nur) das Desktop-image installiert und dieses Desktop-System nicht so konfiguriert, dass es auch in den (runlevel5.target ->)graphical.target bootet, oder? Ist das beim TE auch so?

  • 1.) Auf dem Desktop-System boote ich ja zum Testen der Framebuffer-Slideshow nur bis zum multi-user.target per:

    Bash
    $ sudo systemctl set-default multi-user

    Daher kommt hier korrekt raus:

    Bash
    $ systemctl get-default
    multi-user.target

    Der system Link zeigt weiterhin auf graphical.target:

    Bash
    $ ls -la /usr/lib/systemd/system/default.target
    lrwxrwxrwx 1 root root 16  6. Sep 2024  /usr/lib/systemd/system/default.target -> graphical.target

    und beim User ist es default:

    Bash
    $ ls -la /usr/lib/systemd/user/default.target
    -rw-r--r-- 1 root root 471  2. Feb 2021  /usr/lib/systemd/user/default.target


    Aber klar, das in /usr/lib/systemd/ sind ja nur die Defaults!

    In den konfigurierten Verzeichnissen /etc/systemd/ ist es dagegen:

    Bash
    $ ls -l /etc/systemd/system/default.target
    lrwxrwxrwx 1 root root 37 19. Mai 14:06 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target

    bzw. bei einem bis in den Desktop bootenden Desktop-System

    Bash
    $  ls -l /etc/systemd/system/default.target
    lrwxrwxrwx 1 root root 36 19. Mai 14:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target
    
    $ systemctl get-default
    graphical.target


    2.) Beim Lite-System ...

    Bash
    $ systemctl get-default 
    multi-user.target

    ... sind die Defaults in /usr/lib/systemd/ exakt wie im Desktop-System:

    Bash
    $ ls -la /usr/lib/systemd/system/default.target
    lrwxrwxrwx 1 root root 16 Mar 21 12:38 /usr/lib/systemd/system/default.target -> graphical.target
    Bash
    $ ls -la /usr/lib/systemd/user/default.target
    -rw-r--r-- 1 root root 471 Mar  6 12:43 /usr/lib/systemd/user/default.target

    ... und das Konfigurierte erwartungsgemäß multi-user.target

    Bash
    $ ls -l /etc/systemd/system/default.target
    lrwxrwxrwx 1 root root 37 Nov 19 14:40 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target


    Das sieht also alles gut und verständlich aus.
    Erklärt aber noch nicht das Verhalten in der user-Unit bzgl. WantedBy=multi-user.target

  • D. h. Du hast (nur) das Desktop-image installiert und dieses Desktop-System nicht so konfiguriert, dass es auch in den (runlevel5.target ->)graphical.target bootet, oder? Ist das beim TE auch so?

    Da (mir) zu Beginn des Threads nicht klar war, dass der TE ein Lite-System nutzt, hatte ich mein Desktop-System halt per

    Code
    sudo systemctl set-default multi-user

    nur bis zum multi-user.target booten lassen.

    Später habe ich dann parallel auf einem anderen Raspi ein Lite System aufgesetzt, um dem TE besser folgen (und evtl. weiter helfen) zu können.

  • Erklärt aber noch nicht das Verhalten in der user-Unit bzgl. WantedBy=multi-user.target

    Versuch bzw. teste mal mit:

    Code
    DefaultDependencies=no

    , in der [Unit]-Section der user-service-unit.

  • Versuch bzw. teste mal mit:

    Code
    DefaultDependencies=no

    , in der [Unit]-Section der user-service-unit.

    Das ändert nichts am Verhalten.

    Ich denke, hier können wir erst einmal Schluss machen. Mein Ehrgeiz, akademisch noch weiter in die Tiefe zu gehen, ist zumindest gerade erschöpft.

    Wenn der TE Bergwichtel sich wieder meldet und noch Probleme haben sollte, schauen wir weiter.

  • simonz Entschuldige bitte, das ich erst heute antworte, aber ich lag etliche Tage lang flach.

    Noch einmal vielen Dank für Deine Hilfen bei fbi, systemd. Seit gestern schnurrt das System.

    echo 0 | sudo tee /sys/class/graphics/fbcon/cursor_blink

    Auf die Idee kam ich nicht. Müßte ich ausprobieren. Ich habe das Gefühl, das der Aufruf von sudo schon das Passwort haben will, obwohl in der sudoers der Befehl für ohne Passwortabfrage definiert ist. Was von der Konsole aus auch funktioniert, aber nicht als Systemd-Service.

    Deswegen habe ich die Sache anders gemacht. Ich schalte den Cursor in der cmdline.txt mit vt.global_cursor_default=0 aus. Der RPi wird eh nur über ssh bedient.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!