GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Kann Service Noip2 nicht beim Booten starten?

Für diese Frage gibt es hier bereits Antworten :Wie richte ich No-IP als richtigen Dienst ein?

(2 Antworten)
Vor 2 Jahren geschlossen.

Ich habe dynamische No-IP-DDNs gemäß dieser Anleitung installiert:
https://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/

Ich bekomme den Dienst zum Laufen von

sudo /usr/local/bin/noip2

Ich möchte jedoch, dass der Dienst beim Booten gestartet wird. Ich habe versucht, das folgende Skript zu /etc/init.d/noip2.sh

hinzuzufügen
#######################################################
#! /bin/sh
# . /etc/rc.d/init.d/functions  # uncomment/modify for your killproc
case "$1" in
    start)
    echo "Starting noip2."
    /usr/local/bin/noip2
    ;;
    stop)
    echo -n "Shutting down noip2."
    killproc -TERM /usr/local/bin/noip2
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac
exit 0
#######################################################

Gefolgt von:

sudo chmod +x /etc/init.d/noip2.sh
sudo update-rc.d noip2.sh defaults

Jetzt sollte ich den Dienst mit

starten können
sudo service noip2 start

Aber ich bin es nicht. Wenn ich journalctl -xe ausführe Ich bekomme folgendes:

-- Unit noip2.service has begun starting up.
Nov 03 12:36:11 media systemd[3111]: noip2.service: Failed to execute command: Exec format error
Nov 03 12:36:11 media systemd[3111]: noip2.service: Failed at step EXEC spawning /etc/init.d/noip2.sh: Exec format error
-- Subject: Process /etc/init.d/noip2.sh could not be executed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The process /etc/init.d/noip2.sh could not be executed and failed.
--
-- The error number returned by this process is 8.
Nov 03 12:36:11 media systemd[1]: noip2.service: Control process exited, code=exited status=203
Nov 03 12:36:11 media systemd[1]: noip2.service: Failed with result 'exit-code'.
Nov 03 12:36:11 media systemd[1]: Failed to start noip2.service.
-- Subject: Unit noip2.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support

Aktualisierte Informationen für Benutzer PerDuck:
Ich erhalte die folgenden Fehler beim Versuch Ihrer Lösung… 🙁
Hinzufügen versucht

RestartSec=30

Zumindest versucht er es jetzt immer wieder, aber er startet immer noch nicht. Ich kann es immer noch mit sudo /usr/local/bin/noip2

starten

Die Fehler:

Nov 03 23:26:42 media systemd[1]: noip2.service: Service hold-off time over, scheduling restart.
Nov 03 23:26:42 media systemd[1]: noip2.service: Scheduled restart job, restart counter is at 5.
Nov 03 23:26:42 media systemd[1]: Stopped noip2 service.
Nov 03 23:26:42 media systemd[1]: noip2.service: Start request repeated too quickly.
Nov 03 23:26:42 media systemd[1]: noip2.service: Failed with result 'start-limit-hit'.
Nov 03 23:26:42 media systemd[1]: Failed to start noip2 service.

Akzeptierte Antwort:

Seit Ubuntu 15.04 ist systemd die Standardmethode zur Steuerung von Hintergrundprozessen (und vielem mehr). .
Ich schlage vor, von Ihrer init.d zu wechseln Skript zu einem systemd Einheit :

Erstellen Sie die Datei /etc/systemd/system/noip2.service mit folgendem Inhalt (und legen Sie Ihre init.d ab Skripte):

[Unit]
Description=noip2 service

[Service]
Type=forking
ExecStart=/usr/local/bin/noip2
Restart=always

[Install]
WantedBy=default.target

Dann ausgeben

sudo systemctl daemon-reload

um systemd zu erstellen Kenntnis der neuen Einheit (systemd speichert Unit-Dateien und dieser Befehl macht systemd den Cache überdenken).

Jetzt können Sie versuchen, Ihr Gerät zu starten und zu stoppen und seinen Status sehen:

sudo systemctl status noip2
sudo systemctl start  noip2
sudo systemctl status noip2
sudo systemctl stop   noip2
sudo systemctl status noip2

Damit das Gerät beim Booten gestartet wird, müssen Sie es aktivieren es:

sudo systemctl enable noip2

Um den Autostart beim Booten zu deaktivieren, müssen Sie deaktivieren die Einheit:

sudo systemctl disable noip2

Meistens reichen fünf Befehle aus, um das Verhalten einer Einheit zu steuern:

systemctl start   $unit   # starts a unit NOW
systemctl stop    $unit   # stops a unit NOW
systemctl status  $unit   # shows status
systemctl enable  $unit   # starts a unit at boot time (but not NOW)
systemctl disable $unit   # stops autostart (but doesn't stop the unit NOW)

Sie können auch den Autostart aktivieren und das Gerät sofort starten oder den Autostart deaktivieren und sofort stoppen:

systemctl enable  --now $unit   # enable and start in one go
systemctl disable --now $unit   # disable and stop in one go

Aktualisieren

Einige Recherchen ergaben noip2 läuft als Daemon , d.h. wenn Sie es starten, erstellt es einen anderen Prozess, der im Hintergrund läuft (sog. forking ) und der Vordergrundprozess kehrt sofort zurück (beendet). Deshalb sind das init.d-Skript und die systemd-Unit fehlgeschlagen:Sie haben noip2 gestartet nur um zu sehen, dass es sofort beendet wird. Daher hat systemd immer wieder vergeblich versucht, es neu zu starten. (Standardmäßig startet systemd einen Prozess höchstens 5 Mal innerhalb von etwa 10 Sekunden neu, bevor er aufgibt und ihn im fehlgeschlagenen Zustand belässt.)

Verwandte:Verschieben des Home-Ordners zur Neuinstallation von Ubuntu?

Um systemd mitzuteilen, dass die Unit vom Typ forking ist Zeile hinzufügen

Type=forking

zum [Service] Abschnitt, wie ich es gerade im obigen Snippet getan habe. Dies weist systemd an, zu erwarten dass der Hauptprozess sofort zurückkehrt, aber stattdessen den von noip2 erzeugten (gegabelten) Prozess beobachtet .


Ubuntu
  1. Timeout des Systemctl-Dienstes beim Start?

  2. Boot Stuck – Wie starte ich Gui von der Kommandozeile aus?

  3. Kann eine Anwendung nicht als Dienst gestartet werden, aber die Ausführung als eigenständiger Prozess funktioniert einfach?

  4. Kann Cs:go nicht aufhören zu stottern?

  5. Spring Boot-Anwendung als Dienst + VM-Optionen

So starten Sie den Dienst beim Booten mit RHEL 8 / CentOS 8 Linux

So starten Sie den Dienst beim Booten unter Ubuntu 22.04

So starten, stoppen oder starten Sie Apache neu

So starten, stoppen oder starten Sie Nginx neu

So starten, stoppen oder starten Sie Dienste in Ubuntu 20.04 LTS neu

So starten, stoppen oder starten Sie Dienste in Ubuntu neu