sviluppo-web-qa.it

Disabilitare un servizio partendo da tutti i runlevel?

Ho un servizio foo che attualmente inizia al runlevel e versioni successive. Come posso impedirgli di farlo, senza usare update-rc.d foo stop 3 ., che (se lo capisco correttamente) disattiverebbe il servizio ad ogni cambio di runlevel.

(vale a dire, se fossi al runlevel 1 e abilitato foo, allora quando passerei al runlevel sarebbe disabilitato, no?)

Esecuzione di Debian GNU/Linux Lenny.

61
lfaraone

Il termine "stop" non impedisce l'avvio del demone, ma piuttosto lo spegne durante l'immissione del runlevel specificato.

Se vuoi solo rimuovere un servizio/demone da un singolo runlevel, update-rc.d come sottolineato bei freiheit o rimuovi semplicemente il link simbolico da /etc/rcX.d/, dove X è il tuo runlevel. Se non desideri che il servizio venga avviato automaticamente, update-rc.d -f foo remove farà il trucco.

58
PEra

Configura le applicazioni di avvio di Linux con sysv-rc-conf :

apt-get install sysv-rc-conf

Come altri hanno sottolineato, ecco anche pdate-rc.d per la linea cmd.

Ad esempio, esegui

update-rc.d Apache2 disable

per disabilitare Apache2 da tutti i livelli di esecuzione.

56
Not Now

Corto:

Non esiste un modo affidabile per farlo rapidamente.

Lungo:

L'attuale Debian (Debian instabile al 01/06/2012) non ha attualmente un modo affidabile breve per disabilitare costantemente un servizio/demone. - Perché un aggiornamento di un pacchetto demone esegue incondizionatamente "/etc/init.d/package restart", disabilitandolo per questo runlevel o no.

Per assicurarti che un demone non si avvii, puoi:

  • disinstallalo
  • effettua un trasferimento locale dello script /etc/init.d/xyz (in questo modo, nessuno strumento lo troverà)
  • utilizzare/abusare di un file di configurazione del pacchetto corrispondente per provocare un'uscita anticipata di quello script (ad es. inserire una "uscita" all'inizio di/etc/default/xyz nel caso in cui sia originata dallo script init)
  • cerca in quello script init i modi "ufficiali" predefiniti per non avviare quel demone

C'è/era (?) Un passo di init-policy-qualcosa per gli script di init in Debian, che avrebbe dovuto riempire questa funzionalità mancante. - Ho provato a usarlo, l'ho trovato complicato, ho trovato un bug e non l'ho mai più toccato.

Aggiornare:

Passa a "systemd", un'alternativa a "initd". Esiste un pacchetto debian e puoi disabilitare un servizio con qualcosa del genere:

cd /etc/systemd/system
ln -s /dev/null xyz.service
15
Robert Siemer

Esegui questo comando

apt-get install rcconf

Una volta installato, esegui rcconf in SSH e riceverai una finestra di dialogo che mostra tutti i servizi impostati per essere eseguiti all'avvio. Seleziona quelli premendo Spazio per disabilitare/abilitare il particolare e il gioco è fatto, fai semplicemente clic su Ok e quel servizio non si preoccuperà di ricominciare al prossimo avvio. Usandolo da anni. Molto strumento utile per gli utenti Debian/Ubuntu come me.

5
Mark Levinsky

Penso che questo farebbe il lavoro: insserv -r foo

3
user38551

Sono confuso su ciò che stai cercando di realizzare.

In quali livelli di corsa vuoi correre?

Se vuoi sempre che funzioni, usa update-rc.d foo defaults; che lo fermerà tra 0, 1 e 6, lasciandolo in esecuzione tra 2, 3, 4 e 5. (1 non dovrebbe far altro che Shell, 0 e 6 si fermano e si riavvia)

Se si desidera specificare esattamente in quali livelli di esecuzione eseguire:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .
2
freiheit

Inizia a usare insserv da Debian7

Emette tutti i servizi e le informazioni sul runlevel

insserv --showall

Rimuovi gli script elencati da tutti i runlevel

insserv --remove [specify_script]
1
cocoa

Perché non eseguire il backup dello script di avvio da qualche altra parte e rimuoverlo in /etc/init.d/? Se update-rc.d non funziona.

0
Kosaka Honoka

Il Bootup Manager di Ubuntu è una specie di sysv-rc-conf light , una versione più intuitiva della GUI e molte persone che leggono questo thread lo apprezzeranno.

http://www.marzocca.net/linux/bum.html

0
the_guv

Su un sistema basato su Red Hat è possibile utilizzare

chkconfig httpd off
chkconfig httpd --del

per rimuovere il server dai runlevel

sul sistema basato su Debian si suppone che tutti i servizi siano avviati dai file trovati nelle directory /etc/rc?.d/ questi file hanno quindi un collegamento simbolico ai file corrispondenti nella directory /etc/init.d/. Se si desidera che un servizio non si avvii per impostazione predefinita, è possibile rinominarlo/rimuoverlo dalla directory /etc/rc?.d e la modifica verrà mantenuta durante l'aggiornamento del pacchetto purché uno dei collegamenti di avvio sia ancora visualizzato in uno dei le altre (3,4 e 5) directory. Oppure puoi usare il comando update-rc.d per cambiare i link e se vuoi avviare il servizio dopo, puoi usare /etc/init.d/service_name start se lasci l'inizio alla fine ti dà le opzioni che possono essere utilizzate come stop, riavvio, ricarica ...

Penso che puoi usare sysv-rc-conf per disabilitarlo però.

0
Rodent43
Sudo update-rc.d SERVICE disable

Se si desidera specificare i livelli di esecuzione.

Sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

Ricorda di cambiare servizio con il nome del programma.

Sudo service SERVICE restart
0
Eddie