Come posso configurare un servizio da eseguire all'avvio


244

Ho un demone che funziona bene se lo avvio manualmente con il servicecomando:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

ma non è configurato per l'avvio automatico al riavvio del PC.

Come posso configurarlo per l'avvio automatico, anche se nessuno è connesso al PC?


@ user154721 Quali argomenti hai fornito update-rc.d per far funzionare l'avvio automatico? Ho provato varie opzioni ma non ho avuto fortuna.
BennyTheBen,

I programmi di avvio automatico sono configurati in autostartmanifesti o in *.servicefile in diverse posizioni, nonché in init.do crontab. Vedi: unix.stackexchange.com/a/525845/43233
Noam Manos

Risposte:


281
sudo update-rc.d minidlna defaults

Ciò dovrebbe aggiungere il servizio al sistema di avvio automatico. Ma se ottieni:

System start/stop links for /etc/init.d/minidlna already exist.

Esegui il comando

sudo update-rc.d minidlna enable

PS : Per ulteriori dettagli, guarda la pagina man per update-rc.d digitando il comandoman update-rc.d


7
grazie, ma cosa succede se ottengo questo output quando eseguo quel comando ?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes,

1
se minidlna non scrive su alcun file di registro, non lo troverai da nessuna parte. Potrebbe non funzionare perché non è presente alcuna connessione di rete all'avvio? Prova a guardare la configurazione se è possibile attivare il debug e / o la registrazione per scoprire cosa non va.
LassePoulsen,

8
@RicardoReyes utilizza sudo update-rc.d -f minidlna removeper rimuovere i collegamenti esistenti.
Dogweather,

5
Sto ottenendo sotto l'errore update-rc.d: /etc/init.d/usermanage: il file non esiste
Rizwan Patel

2
Anch'io ho lo stesso errore update-rc.d: /etc/init.d/mongod: file does not exist. Quindi, ha sudo systemctl enable mongod.servicelavorato per me.
esploratore

36

A volte è necessario eseguire uno script all'avvio, ad esempio eseguire una configurazione iptables all'avvio. Quindi non è necessario eseguire manualmente lo script ad ogni riavvio.

Puoi eseguire il tuo script all'avvio in Ubuntu aggiungendolo al /etc/init.d/rc.localfile. Guarda i passaggi seguenti.

  1. Apri il /etc/rc.localfile con questo comando:

    vim /etc/rc.local
    
  2. Aggiungi lì lo script che desideri eseguire al processo di avvio, ad esempio:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Esamina i commenti inclusi in quel file e assicurati che un'uscita 0 sia alla fine.

  4. Salva i file. E il tuo script verrà eseguito durante il processo di avvio.


2
I commenti di /etc/init.d/rc.local in Ubuntu 12.04 dicono "Breve descrizione: Esegui /etc/rc.local se esiste", quindi forse aggiungere gli script a /etc/rc.local sarebbe un'idea migliore?
Sanghyun Lee,

Questo metodo emetterebbe il comando "shutdown" al servizio o ucciderebbe semplicemente il processo allo spegnimento del sistema operativo?
Vadim Chekan,

Vadim, rc.local è appena eseguito all'avvio, non si ottiene nulla allo spegnimento. Molto probabilmente il processo verrebbe interrotto dal sistema operativo allo spegnimento.
Weboide,

1
FYI: La differenza tra rc.localvs aggiungendolo a init, è che rc.local viene eseguito alla fine della sequenza di avvio di init, piuttosto che come parte di esso
BobTuckerman

35
  • Per avviare un demone all'avvio:

    update-rc.d service_name defaults
    
  • Rimuovere:

    update-rc.d -f service_name remove
    

default => livelli di esecuzione predefiniti 2,3,4 e 5

Esempio:

update-rc.d tomcat7 defaults

1
Quando eseguo questo comando, ottengo "I collegamenti di avvio / arresto del sistema per /etc/init.d/tomcat7 esistono già". tuttavia, quando riavvio, Tomcat non viene avviato, devo sempre eseguire "Service Tomcat7 Start".
John Little,

nel mio caso sudo update-rc.d myservice default si completa sempre senza output e il servizio non si avvia all'avvio o con sudo myservice start che si completa silenziosamente. sudo /etc/init.d/myservice tuttavia inizia a funzionare
axk

13

Da Ubuntu 15.10 (resp. Debian 8 "jessie"), è necessario usare il comando seguente per configurare il servizio minidlnada eseguire all'avvio:

sudo systemctl enable minidlna.service

E per disabilitarlo nuovamente partendo all'avvio:

sudo systemctl disable minidlna.service

Funziona con tutti i riferimenti ai nomi di servizio che puoi trovare con ls /lib/systemd/system/*.service.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.