Probleme mit systemd service

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
rochrike
Beiträge: 2
Registriert: 16.06.2017 18:19:39

Probleme mit systemd service

Beitrag von rochrike » 16.06.2017 18:54:00

Hallo,

Ich habe mir jetzt schon viele Stunden den Kopf zerbrochen und komme einfach nicht weiter. Im Prinzip geht es nur darum meinen Newsgrabber (nzbget) automatisch beim booten zu starten.
Aber erstmal zum Grundsaetzlichen:
Ich benutze:

Code: Alles auswählen

Distributor ID:	Debian
Description:	Debian GNU/Linux 8.8 (jessie)
Release:	8.8
Codename:	jessie

Code: Alles auswählen

ARMBIAN 5.31 stable Debian GNU/Linux 8 (jessie) 4.11.5-sunxi
Zum init-System:

Code: Alles auswählen

robin@bananapim2:~$ cat /proc/1/comm 
systemd
Falls das wichtig ist das ganze bediene ich per SSH ueber das lokale Netzwerk.
Ich weiss Armbian ist nicht zu 100% Debian aber ich hoffe das ich hier trotzdem auf Hilfe stosse.
Nun zu meinem eigentlichen Problem:
Ich moechte wie oben gesagt gerne das NZBGet beim booten automatisch startet.
Mein service file liegt in:

Code: Alles auswählen

/etc/systemd/system
NZBGet liegt in:

Code: Alles auswählen

/usr/bin/nzbget
So sieht mein servicefile (nzbget.service) den ich aus dem GitHub von NZBGet habe aus:

Code: Alles auswählen

[Unit]
Description=NZBGet Daemon
DaemonAfter=network.target

[Service]
User=%i
ExecStart=/usr/bin/nzbget/nzbget -D
ExecStop=/usr/bin/nzbget/nzbget -Q
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target
Den Installationspfad habe ich bereits angepasst.
Nun zum Problem:
Weder startet NZBGet automatisch beim booten noch kann ich NZBGet manuell ueber den Service starten.

Code: Alles auswählen

robin@bananapim2:/etc/systemd/system$ sudo systemctl daemon-reload
robin@bananapim2:/etc/systemd/system$ sudo systemctl start nzbget.service
robin@bananapim2:/etc/systemd/system$ sudo systemctl status nzbget.service
● nzbget.service - NZBGet Daemon
   Loaded: loaded (/etc/systemd/system/nzbget.service; enabled)
   Active: inactive (dead) since Fri 2017-06-16 18:37:01 CEST; 9s ago
  Process: 1629 ExecStop=/usr/bin/nzbget/nzbget -Q (code=exited, status=0/SUCCESS)
  Process: 1620 ExecStart=/usr/bin/nzbget/nzbget -D (code=exited, status=0/SUCCESS)
 Main PID: 1620 (code=exited, status=0/SUCCESS)

Jun 16 18:37:01 bananapim2 systemd[1]: Started NZBGet Daemon.
Jun 16 18:37:01 bananapim2 nzbget[1629]: Request sent
Jun 16 18:37:01 bananapim2 nzbget[1629]: server returned: Stopping server
Muesste unter Active nicht eigentlich active stehen ? Und warum zur Hoelle steht ganz unten Stopping Server ?
Und ausserdem habe ich noch folgende Fehler

Code: Alles auswählen

robin@bananapim2:/etc/systemd/system$ sudo systemctl enable nzbget.service
Synchronizing state for nzbget.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d nzbget defaults
insserv: warning: script 'K01nzbget.service' missing LSB tags and overrides
insserv: warning: script 'K01nzbget' missing LSB tags and overrides
insserv: warning: script 'nzbget' missing LSB tags and overrides
insserv: warning: script 'nzbget.service' missing LSB tags and overrides
Executing /usr/sbin/update-rc.d nzbget enable
update-rc.d: error: nzbget Default-Start contains no runlevels, aborting.
Navigiere ich manuell in den NZBGet Ordner und starte es manuell kann ich es per Webinterface ganz normal erreichen. Versuche ich es aber mit dem Service dann kann ich das Webinterface nicht erreichen.
Und mir kommt "update-rc.d error" komisch vor war das nicht sysVinit ? Ausserdem kann ich mir unter "contains no runlevels" nichts vorstellen.
Vielleicht liegt es auch garnicht an dem Script ? Wie man sieht Fragen ueber Fragen. Wuerde mich selbst als Linux Anfaenger bezeichnen.

Danke im Vorraus fuer eure Antworten.

PS: Sorry fuer die ganzen ue ae und oe und die ganzen ss, die 5 Euro Ebay Tastatur hat US Layout :D

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Probleme mit systemd service

Beitrag von scientific » 16.06.2017 22:25:58

Was sagt

Code: Alles auswählen

 systemctl cat nzbget.service
?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rochrike
Beiträge: 2
Registriert: 16.06.2017 18:19:39

Re: Probleme mit systemd service

Beitrag von rochrike » 17.06.2017 11:30:40

Hallo,
Danke fuer deine Antwort.

Code: Alles auswählen

robin@bananapim2:/etc/samba$ systemctl cat nzbget.service
# /etc/systemd/system/nzbget.service
[Unit]
Description=NZBGet Daemon
DaemonAfter=network.target

[Service]
User=%i
ExecStart=/usr/bin/nzbget/nzbget -D
ExecStop=/usr/bin/nzbget/nzbget -Q
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Probleme mit systemd service

Beitrag von scientific » 19.06.2017 01:37:44

Hi!

Ja, da scheint ein Fehler in der Unit zu sein.
rochrike hat geschrieben:Hallo,
Danke fuer deine Antwort.

Code: Alles auswählen

robin@bananapim2:/etc/samba$ systemctl cat nzbget.service
# /etc/systemd/system/nzbget.service
[Unit]
Description=NZBGet Daemon
DaemonAfter=network.target

[Service]
User=%i
ExecStart=/usr/bin/nzbget/nzbget -D
ExecStop=/usr/bin/nzbget/nzbget -Q
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target
Du hast im Abschnitt [Service] eine Zeile

Code: Alles auswählen

User=%i
, der Name der Service-Unit ist aber "nzbget.service"
dieses %i würde bei einer sogenannten Instanziierenden Unit ersetzt werden.
So eine instanziierende Unit hat den z.B. Dateinamen nzbget@.service und wird enabled mit z.B.

Code: Alles auswählen

systemctl enable nzbget@scientific.service
Dann würde %i für "scientific" stehen, was mein Loginusername ist.
Der Service würde mit der UID von scientific (also in diesem Falle hier 1000) ausgeführt werden. Bei dir ist das leer und die Direktive User=%i läuft fehl.

Du hast jetzt mehrere Möglichkeiten das zu reparieren. Vorab 3 Fragen:
A) Zuerst die Frage, nzbget soll als dein mit UID deines Loginusers ausgeführt werden?
B) nzbget soll nur gestartet werden, wenn du dich einloggst?
C) nzbget soll vom Boot bis zum Shutdown durchlaufen?

Wenn A) und B) mit ja beantwortet werden, dann lösche die Zeile "User=%i" und verschiebe die Service-Unit nach /etc/systemd/user/
Ändere die Zeile mit WantedBy= in

Code: Alles auswählen

WantedBy=default.target
und enable sie als user-service mit

Code: Alles auswählen

robin@bananapim2:$ systemctl --user enable --now nzbget.service
(Achtung, das musst du als User, nicht als root ausführen!!!)

Wenn A) und C) mit Ja beantwortet werden, dann noch eine Frage:
Sind noch weitere User am System, die diesen Service nutzen?
Wenn ja:
Ändere den Dateinamen

Code: Alles auswählen

mv /etc/systemd/system/nzbget.service /etc/systemd/system/nzbget@.service
und enable und starte sie mit

Code: Alles auswählen

systemctl enable --now nzbget@robin.service
Wenn nein:
Ändere die Zeile "User=%i" in "User=robin" und enable und starte den Service mit

Code: Alles auswählen

systemctl enable --now nzbget.service
Alles Klar?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten