Come fermare l'avvio di un demone all'avvio in Debian


16

Ci sono alcuni demoni che disabilito all'avvio. Ad esempio, utilizzo quanto segue:

 sudo update-rc.d -f postgresql remove

Non sono nemmeno sicuro che quel comando sia corretto e non ricordo da dove l'ho preso.

Ad ogni modo, ogni volta che aggiorno postgresql, l'impostazione viene persa (ovvero il demone si avvia al riavvio).


1
Su Debian con SysVinit, mi piace file-rc. Invece di gestire i collegamenti simbolici, gestisco un file di testo con le mie configurazioni di runlevel.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


22

update-rc.dè stato inizialmente utilizzato dagli script di aggiornamento dei pacchetti. removeviene chiamato durante la disinstallazione del pacchetto e rimuove tutti i collegamenti, defaultsviene chiamato durante l'installazione del pacchetto enableo disablepuò essere utilizzato in base a debconf e sono utili per gli amministratori di sistema. Le pulizieremove non sono utili per disabilitare un servizio. Dalla pagina man:

Un errore comune di amministrazione del sistema è quello di eliminare i collegamenti pensando che questo "disabiliterà" il servizio, ovvero che ciò impedirà l'avvio del servizio. Tuttavia, se tutti i collegamenti sono stati eliminati la volta successiva che il pacchetto viene aggiornato, lo script postinst del pacchetto eseguirà di nuovo update-rc.d e questo reinstallerà i collegamenti nelle posizioni predefinite di fabbrica. Il modo corretto di disabilitare i servizi è configurare il servizio come interrotto in tutti i runlevel in cui è avviato per impostazione predefinita. Nel sistema init System V questo significa rinominare i collegamenti simbolici del servizio da S a K.

sudo update-rc.d postgresql disablefarà quello che vuoi, perché mantiene i symlink rc.d ma con il prefisso K (ucciso, fermato). Ripristina con un enable. Alcuni servizi supportano la disabilitazione dal loro /etc/defaults/$servicefile, ma purtroppo ci sono eccezioni. Altri modi per disabilitare un servizio sono chmod -x il /etc/init.d/$servicefile o inserirne uno exit 0nella parte superiore.


6

Per chiarire la soluzione migliore, simile alla risposta che Tobu ha dato:

  1. Non utilizzare update-rc.dcon l' removeopzione.
  2. Invece, usa update-rc.dcon l' disableopzione.

Esempio: update-rc.d postgresql disable


IN PIÙ, puoi anche trovare (e disabilitare) altri servizi più specifici con systemctl .

Esempio: systemctl disable pppd-dns.service


+1 per l'avviso di non utilizzare l'opzione
RIMUOVI

3

Tobu ha assolutamente ragione, ma per completezza v'è uno strumento per dare una panoramica intelligente: sysv-rc-conf. Per copia e patse:

apt-get install sysv-rc-conf

In esecuzione sysv-rc-confvedrai quale script viene eseguito in quale runlevel. È possibile abilitare / disabilitare i servizi tramite spacee chiudere con q.


2
Mi piace anche rcconf, è nei repository standard. Ricorda che nessuno di questi funzionerà con upstart, che è predefinito su Ubuntu. Sebbene molte cose utilizzino ancora l'init legacy.
JM Becker,
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.