GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Impossible d'obtenir le service Noip2 pour démarrer au démarrage ?

Cette question a déjà des réponses ici :Comment configurer No-IP en tant que service approprié ?

(2 réponses)
Fermé il y a 2 ans.

J'ai installé des ddns dynamiques sans ip en suivant ce guide :
https://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/

Je fais fonctionner le service par

sudo /usr/local/bin/noip2

Cependant, je souhaite que le service démarre au démarrage, j'ai essayé d'ajouter le script suivant à /etc/init.d/noip2.sh

#######################################################
#! /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
#######################################################

Suivi de :

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

Maintenant, je devrais pouvoir démarrer le service avec

sudo service noip2 start

Mais je ne suis pas. Lorsque j'exécute journalctl -xe J'obtiens ceci :

-- 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

Informations mises à jour pour l'utilisateur PerDuck :
J'obtiens les erreurs suivantes en essayant votre solution… 🙁
J'ai essayé d'ajouter

RestartSec=30

Au moins, il continue d'essayer maintenant mais il ne démarre toujours pas. Je peux toujours le démarrer avec sudo /usr/local/bin/noip2

Les erreurs :

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.

Réponse acceptée :

Depuis Ubuntu 15.04, le moyen standard de contrôler les processus d'arrière-plan (et bien plus encore) est systemd .
Je suggère de passer de votre init.d script à un systemd unité :

Créez le fichier /etc/systemd/system/noip2.service avec le contenu suivant (et déposez votre init.d script):

[Unit]
Description=noip2 service

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

[Install]
WantedBy=default.target

Puis lancez

sudo systemctl daemon-reload

faire systemd conscient de la nouvelle unité (systemd met en cache les fichiers unitaires et cette commande rend systemd reconsidérez son cache).

Vous pouvez maintenant essayer de démarrer et d'arrêter votre unité et voir son statut :

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

Pour que l'unité démarre au démarrage, vous devez activer il :

sudo systemctl enable noip2

Pour désactiver le démarrage automatique au démarrage, vous devez désactiver l'unité :

sudo systemctl disable noip2

La plupart du temps cinq commandes suffisent pour contrôler le comportement d'une unité :

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)

Vous pouvez également activer le démarrage automatique et démarrer l'unité immédiatement ou désactiver le démarrage automatique et l'arrêter immédiatement :

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

Mettre à jour

Certaines recherches ont révélé le noip2 s'exécute en tant que démon , c'est-à-dire que lorsque vous le démarrez, il crée un autre processus qui s'exécute en arrière-plan (appelé forking ) et le processus de premier plan revient immédiatement (quitte). C'est pourquoi le script init.d et l'unité systemd ont échoué :ils ont démarré noip2 juste pour le voir sortir immédiatement. Par conséquent, systemd a essayé de le redémarrer encore et encore en vain. (Par défaut, systemd redémarre un processus au maximum 5 fois en 10 secondes environ avant d'abandonner et de le laisser en état d'échec.)

Connexes :Déplacer le dossier de départ vers une nouvelle installation d'Ubuntu ?

Pour indiquer à systemd que l'unité est de type forking ajouter la ligne

Type=forking

au [Service] section comme je viens de le faire dans l'extrait ci-dessus. Cela indique à systemd de attendre le processus principal pour revenir immédiatement mais à la place regarder le processus engendré (forké) par noip2 .


Ubuntu
  1. Comment démarrer le serveur Vnc au démarrage ?

  2. Impossible de démarrer le serveur Vino Vnc au démarrage ?

  3. Impossible de démarrer Thesql Community Server (5.7) ?

  4. La vision 3D ne fonctionne pas ?

  5. Application de démarrage Spring en tant que service + Options VM

Comment démarrer le service au démarrage avec RHEL 8 / CentOS 8 Linux

Comment démarrer le service au démarrage sur Ubuntu 22.04

Comment démarrer, arrêter ou redémarrer Apache

Comment démarrer, arrêter ou redémarrer Nginx

Comment démarrer, arrêter ou redémarrer des services dans Ubuntu 20.04 LTS

Comment démarrer, arrêter ou redémarrer les services dans Ubuntu