• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gelöst Raspian (Jessie): systemd Verständnisfrage (Programmstart)

Guten Abend

Ich stehe gerade vor einem Problem, das ich nicht verstehe:
Wenn ich den MQTT-Server in der Konsole per
Code:
mosquitto -c /etc/mosquitto/mosquitto.conf -d
starte, läuft er problemlos. Wenn ich ihn aber per systemctl starte, stoppt er mit exit code 0. So sieht das Start-Script aus:
Code:
cat /etc/system.d/system/mosquitto.service
[Unit]
Description=MQTT v3.1 message broker
ConditionPathExists=/etc/mosquitto/mosquitto.conf
Requires=network.target
 
[Service]
Type=simple
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -d
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
Für mich ist da in der Befehlszeile kein Unterschied zu erkennen. Allerdings muß ich noch das "requires" so abändern, daß mosquitto erst gestartet wird, wenn hostapd läuft. Wie das geht, habe ich auch noch nicht herausgefunden!

CU Freddie
 

Sauerland

Ultimate Guru
Hier in Leap 15.3:
Code:
linux64:/home/stephan # systemctl start mosquitto.service
linux64:/home/stephan # systemctl status mosquitto.service
● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
Loaded: loaded (/usr/lib/systemd/system/mosquitto.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2022-07-03 21:15:49 CEST; 8s ago
Docs: man:mosquitto.conf(5)
man:mosquitto(8)
Main PID: 16525 (mosquitto)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/mosquitto.service
└─16525 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Jul 03 21:15:49 linux64 systemd[1]: Started Mosquitto MQTT v3.1/v3.1.1 Broker.
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: mosquitto version 2.0.10 starting
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: Config loaded from /etc/mosquitto/mosquitto.conf.
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: Starting in local only mode. Connections will only >
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: Create a configuration file which defines a listene>
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: For more details see https://mosquitto.org/document>
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: Opening ipv4 listen socket on port 1883.
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: Opening ipv6 listen socket on port 1883.
Jul 03 21:15:49 linux64 mosquitto[16525]: 1656875749: mosquitto version 2.0.10 running

Poste doch mal die Befehle und Ausgaben.......
Ebenso: Wie installiert?
 
OP
F

Freddie62

Guru
Mosquitto ist unter Raspian (Buster) per apt installiert. Was ich nicht verstehe ist, warum derselbe Befehl, wenn er über systemctl abgesetzt wird, einen Fehler auslöst, in der Konsole aber nicht. Macht irgendwie keinen Sinn.

CU Freddie

[Edit]: Ist nicht Buster, sondern mein älterer PI3 mit Jessie.
 
Zuletzt bearbeitet:

Christina

Moderator
Teammitglied
Hi
@Freddie62 Ich habe Raspian (Buster) in der Überschrift ergänzt.
Wegen deiner Signatur dachte ich zuerst, es ginge bei dir um Tumbleweed.

Du kannst sowas auch selbst erledigen, indem du oben auf das 3 Punkte-Menü [ ⋯ ▾ ] klickst und dann "Thema bearbeiten".
Ich habe das Thema auch noch nach "Andere Distributionen" verschoben. Dort passt es besser hin.
 
OP
F

Freddie62

Guru
Hi Christina

Ich dachte, das wäre ein allgemeines Thema, daher hatte ich das unter Konsole eröffnet.

CU Freddie
 
OP
F

Freddie62

Guru
Danke für den Hinweis. Das war nicht so ganz ersichtlich.
systemctl start mosquitto ergibt nichts, aber:
Code:
systemctl status mosquitto
● mosquitto.service - MQTT v3.1 message broker
   Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled)
   Active: inactive (dead) since Mo 2022-07-04 17:33:59 CEST; 8s ago
  Process: 22210 ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -d (code=exited, status=0/SUCCESS)
 Main PID: 22210 (code=exited, status=0/SUCCESS)

Jul 04 17:33:59 Raspberrypi systemd[1]: Started MQTT v3.1 message broker.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: mosquitto version 1.3.4 (build date 2017-05-29 22:25:09+0000) starting
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Config loaded from /etc/mosquitto/mosquitto.conf.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Opening ipv6 listen socket on port 1883.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Opening ipv4 listen socket on port 1883.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Opening ipv6 listen socket on port 8883.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Opening ipv4 listen socket on port 8883.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Opening ipv4 listen socket on port 1883.
Jul 04 17:33:59 Raspberrypi mosquitto[22210]: 1656948839: Opening ipv4 listen socket on port 8883.

So richtig verstehe ich das nicht, da die Befehlszeilen absolut identisch sind.

CU Freddie
 

Sauerland

Ultimate Guru
Hier meine systemd-Datei:
Code:
[Unit]
Description=Mosquitto MQTT v3.1/v3.1.1 Broker
Documentation=man:mosquitto.conf(5) man:mosquitto(8)

[Service]
Type=simple
User=mosquitto
Group=mosquitto
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

[Install]
WantedBy=multi-user.target
Allerdings aus openSUSE, der raspi1 macht noch ein Update.....
Und der hat buster installiert.
 
OP
F

Freddie62

Guru
Ohne die Option "-d" bekomme ich
Code:
"Warning: Unit file changed on disk, 'systemctl daemon-reload' recommended."
Starten will er trotzdem nicht. Updaten ist keine Option, da:
1. Jessie auf Bullseye oder Buster? Da sind mehrere Releases dazwischen.
2. Das System läuft seit mehreren Jahren von SD-Karte ohne Probleme und wurde eigentlich durch einen RasPI4-Server (mit SSD und USV) ersetzt, der aber momentan die Firmware (brcm43455) für wlan0 nicht laden will. Davon abgesehen scheint er auch Probleme mit mehr als 8 Clients am AP zu haben. Der alte RPI3B+ hat damit keine Probleme. Ein externes WLAN (USB) hat auch nicht geholfen, da anscheinend zu schwach. Jetzt warte ich auf einen weiteren USB-WLAN-Adapter mit abschraubbarer Antenne. Dann nutze ich meine, am RPI4 installierte externe Antenne, die deutlich mehr Verstärkung bringt. Dann, so hoffe ich, gehen auch mehr Clients, sodaß ich den RPI3 in den Ruhestand schicken kann.

CU Freddie
 

framp

Moderator
Teammitglied
Jessie ist schon laenger out of Service. Ich wuerde mal darueber nachdenken auf das aktuelle Bullseye zu gehen ...

Anyhow: Bei mir laeuft Buster und ich kann mosquitto ohne Probleme per systemctl starten.

Code:
cat ./system/multi-user.target.wants/mosquitto.service
[Unit]
Description=Mosquitto MQTT v3.1/v3.1.1 Broker
Documentation=man:mosquitto.conf(5) man:mosquitto(8)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
 
OP
F

Freddie62

Guru
Wie gesagt, das ist mein alter Server, der inzwischen durch einen Neuen (unter Bullseye) ersetzt wurde. Leider geht der neue momentan nicht, sodaß der Alte so lange seinen Dienst tun muß ....
ich hoffe baldmöglichst entweder /dev/wlan0 wieder ans Laufen zu bringen. Wenn das nicht klappt, muß ich warten, bis der neue WLAN-Stick ankommt. Sobald der konfiguriert ist, wird der alte Server runtergefahren.

CU Freddie
 

framp

Moderator
Teammitglied
Hast Du mal in /var/log/mosquitto/mosquitto.log gesehen bei Nutzung von Option -d? Gibt es da keine Hinweise wo die Ursache des Startabbruchs liegt?
 
OP
F

Freddie62

Guru
Das Logging habe ich abgeschaltet, da sonst zu viel auf die SD geschrieben wird. Dafür läuft sie allerdings jetzt auch schon locker fünf oder sechs Jahre ....
Hm. Ich habe jetzt dreisterweise mal mein Startscript gelöscht und durch Deins ersetzt. Jetzt startet er.
Der einzige Unterschied ist in den Zeilen:
Code:
Meins:
ConditionPathExists=/etc/mosquitto/mosquitto.conf
Requires=network.target

Deins:
After=network-online.target
Wants=network-online.target
"network-online.target" gibt es bei mir nicht, also könnte es sein, daß der Fehler durch die Zeile "ConditionPathExists=/etc/mosquitto/mosquitto.conf" verursacht wird? Der Pfad existiert. Mosquitto wird ja mit diesem Pfad gestartet ....

CU Freddie
 

framp

Moderator
Teammitglied
Jetzt startet er.
Problem geloest :)
"network-online.target" gibt es bei mir nicht, also könnte es sein, daß der Fehler durch die Zeile "ConditionPathExists=/etc/mosquitto/mosquitto.conf" verursacht wird? Der Pfad existiert. Mosquitto wird ja mit diesem Pfad gestartet ....
Ich bin zugegebenermassen kein Systemd Spezl. Keine Ahnung. Aber beruecksichtige dass meine mosquitto.service von RaspiOS Buster stammt waehren Du Raspbian Jessie am laufen hast und es da sicherlich im Systemdbereich Aenderungen gegeben hat.
 
OP
F

Freddie62

Guru
Ich werde demnächst mal ausprobieren, welcher Eintrag den Ärger verursacht hat. Das möchte ich doch gerne wissen! Solange der neue Server nicht läuft, möchte ich allerdings vermeiden, zu viel auf der SD rumzuschreiben. Ist ja nicht mehr die Neueste.
"systemd" ist für mich immer noch ein Buch mit sieben Siegeln! Auf dem neuen Server kaue ich immer noch daran, wie ich "mosquitto" beibringe, daß er erst starten darf, wenn "hostapd" gestartet ist, aber das ist ein anderes (neues Thema). Eigentlich sollte er erst "After=hostapd.service" starten. Tut er aber anscheinend momentan nicht. Nur wenn man ihn nach dem Neustart von Hand startet, will er.
Solange ich selbst den Neustart mache, ist das kein Problem. Der Server (der alte wie auch der neue) ist nicht von außen zugänglich. Durch die USV sollte solch eine Notwendigkeit auch nicht auftauchen. Ansonsten hat meine Frau ein kleines Problem, falls ich mal wieder auf Dienstreise bin und das Ding neu startet .....

CU Freddie
 
OP
F

Freddie62

Guru
Dafür habe ich ja den neuen Server. Da muß ich das allerdings mal machen. Schieb ich immer auf, da ich noch so viel am Smarthome und an der Config ändern muß. Leider ist irgendwie am Ende des Tages (nicht nur ) zu Hause immer noch zu viel Arbeit übrig, die erledigt werden muß/sollte! ;)
Zur Not habe ich ja zwei Server, wobei der Alte viele Dinge noch nicht macht, die der Neue bereits macht, aber dafür hat der Neue Probleme damit, mehr als acht WLAN-Devices zu verwalten. Mal sehen, wie das mit dem (hoffentlich bald ankommenden) neuen USB-WLAN-Stick klappt. Der kann 2,4 und 5GHz, sowie AP-Mode. Der sollte mehr verwalten können.
 
Oben