GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Non riesci a far partire il servizio Noip2 all'avvio?

Questa domanda ha già risposte qui :Come faccio a impostare No-IP come servizio adeguato?

(2 risposte)
Chiuso 2 anni fa.

Ho installato ddns dinamici no-ip seguendo questa guida:
https://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/

Ottengo il servizio in esecuzione da

sudo /usr/local/bin/noip2

Comunque voglio che il servizio si avvii all'avvio, ho provato ad aggiungere il seguente script a /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
#######################################################

Seguito da:

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

Ora dovrei essere in grado di avviare il servizio con

sudo service noip2 start

Ma non lo sono. Quando eseguo journalctl -xe Ottengo quanto segue:

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

Informazioni aggiornate per l'utente PerDuck:
Ottengo i seguenti errori provando la tua soluzione... 🙁
Ho provato ad aggiungere

RestartSec=30

Almeno continua a provare ora ma non si avvia ancora. Posso ancora avviarlo con sudo /usr/local/bin/noip2

Gli errori:

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.

Risposta accettata:

Da Ubuntu 15.04 il modo standard per controllare i processi in background (e molto altro ancora) è systemd .
Suggerisco di passare dal tuo init.d script in un systemd unità :

Crea il file /etc/systemd/system/noip2.service con il seguente contenuto (e rilascia il tuo init.d script):

[Unit]
Description=noip2 service

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

[Install]
WantedBy=default.target

Quindi emetti

sudo systemctl daemon-reload

per creare systemd a conoscenza della nuova unità (systemd memorizza nella cache i file unit e questo comando rende systemd riconsiderare la sua cache).

Ora puoi provare ad avviare e arrestare la tua unità e vedere il suo stato:

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

Per avviare l'unità all'avvio è necessario abilitare esso:

sudo systemctl enable noip2

Per disabilitare l'avvio automatico all'avvio è necessario disabilitare l'unità:

sudo systemctl disable noip2

Il più delle volte cinque comandi sono sufficienti per controllare il comportamento di un'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)

È inoltre possibile abilitare l'avvio automatico e avviare l'unità immediatamente o disabilitare l'avvio automatico e interromperla immediatamente:

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

Aggiorna

Alcune ricerche hanno rivelato il noip2 viene eseguito come un demone , ovvero quando lo avvii, crea un altro processo che viene eseguito in background (il cosiddetto forking ) e il processo in primo piano ritorna immediatamente (esce). Ecco perché lo script init.d e l'unità systemd hanno fallito:hanno avviato noip2 solo per vederlo esce subito. Quindi, systemd ha provato a riavviarlo più e più volte senza alcun risultato. (Per impostazione predefinita, systemd riavvia un processo al massimo 5 volte entro 10 secondi circa prima di arrendersi e lasciarlo in uno stato di errore.)

Correlati:spostare la cartella home nella nuova installazione di Ubuntu?

Per dire a systemd l'unità è di tipo forking aggiungi la riga

Type=forking

al [Service] sezione come ho appena fatto nello snippet sopra. Questo dice a systemd di aspettarsi il processo principale per tornare immediatamente ma invece guardare il processo generato (biforcato) da noip2 .


Ubuntu
  1. Boot Stuck:come avviare Gui dalla riga di comando?

  2. Non è possibile avviare un'applicazione come servizio, ma l'esecuzione come processo autonomo funziona semplicemente?

  3. Impossibile avviare Thesql Community Server (5.7)?

  4. Non riesco a ottenere un Telnet Localhost 25, Ehlo Localhost Output di 250 auth?

  5. Non riesci a far funzionare la visione 3d?

Come avviare il servizio all'avvio con RHEL 8 / CentOS 8 Linux

Come avviare il servizio all'avvio su Ubuntu 22.04

Come avviare, arrestare o riavviare Apache

Come avviare, arrestare o riavviare Nginx

Come avviare, interrompere o riavviare i servizi in Ubuntu 20.04 LTS

Come avviare, arrestare o riavviare i servizi in Ubuntu