Come posso impedire l'avvio automatico dei servizi Linux?


11

Sono recentemente migrato da Windows a Linux (xubuntu)

Sono uno sviluppatore e ho installato tutto ciò di cui ho bisogno, LAMPADA. In Windows disabilitavo tutti i servizi non necessari: non ho bisogno del servizio Apache o MySQL sempre in esecuzione. Ogni volta che avevo bisogno di MySQL usavo:

net start mysql

Come faccio lo stesso in Linux?

  1. Disabilitare i daemon non necessari dall'avvio automatico?
  2. Avvio di loro solo quando ho bisogno di loro?

3
Penso che dovresti includere la versione esatta di Ubuntu che stai utilizzando. Le nuove versioni di Ubuntu usano upstart, che ha i suoi gotchas.
vtest,

Modifica: sto usando Xubuntu ultima versione 10.04, ma ID non voglio usare e GUI per questo, solo dal terminale. Sembra che @prhq abbia qualcosa nella sua risposta. Che cos'è upstart?
Aviv,

Appartiene altrove, su Server Fault o Unix. Comunque utile comunque.
ripper234,

Risposte:


10

Nella maggior parte delle distribuzioni Linux è possibile avviare / arrestare manualmente i servizi (come root o usando sudo) eseguendo i seguenti comandi:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

I servizi che vengono avviati automaticamente sono controllati dai collegamenti ai file in /etc/rc[runlevel[.d/. Trova il tuo runlevel corrente usando il comando "runlevel" come root

# runlevel
N 2

Che qui indica runlevel 2 Ora devi solo rimuovere quei file in /etc/rc2.d/ che non vuoi avviare.

La rimozione di apache e Mysql su un desktop è generalmente ok, ma attenzione a rimuovere altri servizi.


3
Questo è piuttosto fuorviante, anche se hai detto "la maggior parte delle distribuzioni". Qualificherei la tua ricetta come specifica per la distribuzione.
vtest,

Cosa avevi in ​​mente? Posso solo pensare ad ArchLinux (ma quegli utenti dovrebbero già sapere cosa stanno facendo). Naturalmente alcune distribuzioni hanno strumenti specifici, ma la tecnica sopra funziona anche su di esse.
hultqvist,

Abbastanza strano, posso vedere un file chiamato S91apache2 nella directory /etc/rc2.d, suppongo che avvii apache2 ... ma non riesco a trovare alcun file relativo a MySQL. Dove posso trovare informazioni su questi demoni con avvio automatico?
Aviv,

Quindi il server mysql potrebbe non essere configurato per l'avvio automatico. Questo sito sembra avere una buona spiegazione: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist

Nota che sotto * BSD e l'albero di Slackware, la directory è /etc/rc.d/.
nuovo123456,

13

Per le versioni di Ubuntu che usano systemd (15.04 e successive) usare:

systemctl disable service

Questo farà il lavoro. Disabiliterà il servizio e non si riavvierà dopo un riavvio. Per abilitare temporaneamente è sufficiente avviare il servizio. Non abilitare .

Per trovare il nome del servizio utilizzare

service --status-all

Altri comandi sono:

systemctl start service- Usalo per avviare un servizio. Non persiste dopo il riavvio

systemctl stop service- Usalo per interrompere un servizio. Non persiste dopo il riavvio

systemctl restart service - Usalo per riavviare un servizio

systemctl status service- Mostra lo stato di un servizio. Indica se un servizio è attualmente in esecuzione.

systemctl enable service- Attiva il servizio, al successivo riavvio o al prossimo evento di avvio. Persiste dopo il riavvio.

systemctl disable service- Disattiva il servizio al successivo riavvio o al prossimo evento di arresto. Persiste dopo il riavvio.


2
È un peccato che non sia la risposta accettata :). Grazie, mi sono completamente dimenticato di quel comando.
Nordes,

8

Ubuntu 10.04 è nel mezzo di una transizione tra due sistemi di gestione dei servizi: SysVinit (il sistema tradizionale, utilizzato dalla maggior parte delle distribuzioni Linux) e Upstart (un sistema più recente spinto da Ubuntu e disponibile in sempre più distribuzioni).

Gli script di gestione del servizio SysVinit sono presenti /etc/init.d. È possibile avviare il servizio con /etc/init.d/SERVICENAME starte interromperlo con /etc/init.d/SERVICENAME stop. L'avvio automatico del servizio all'avvio dipende dalla presenza di collegamenti simbolici in /etc/rc?.dcui si ?trova una cifra da 2a 5(il runlevel ). Il modo più semplice per impedire l'avvio automatico di un servizio all'avvio è l'utilizzo update-rc.d SERVICENAME disable.

Sono presenti i file di configurazione della gestione dei servizi di avvio /etc/init. È possibile avviare il servizio con start SERVICENAMEe interromperlo con stop SERVICENAME. Il file di configurazione /etc/init/SERVICENAME.confcontiene una linea che indica quando iniziare il servizio: start on …. Un modo semplice per disabilitare questi servizi è cambiare quella linea in start on never and (…). Se non si desidera modificare il file, è anche possibile disabilitare completamente il servizio senza confondere il sistema di packaging rinominandolo per non finire .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

A partire da Ubuntu 10.04, Apache viene fornito con uno script SysVinit e Mysql viene fornito con uno script Upstart.


La modifica di servicename.conf è davvero il modo preferito? Soprattutto quando gli aggiornamenti possono teoricamente aggiornare quei file di configurazione e sovrascrivere le tue modifiche
Masse

@Masse: non è sempre il modo preferito, ma ha il vantaggio di lavorare sempre. Alcuni servizi leggono un file /etc/defaulte hanno START_FOOun'opzione che puoi disattivare, ma molti si aspettano di essere eseguiti se sono installati. Gli aggiornamenti non sovrascriveranno le modifiche senza chiedere conferma poiché si tratta di tutti i file di configurazione.
Gilles 'SO- smetti di essere malvagio' il

Wow. Sembra un grande passo indietro.
Masse,

@Masse: i conffile devono essere modificati dall'amministratore. Ma se non vuoi farlo, puoi anche usare dpkg-divertper rinominare il file di servizio. Tuttavia, se lo fai, non sarai in grado di avviare esplicitamente il servizio.
Gilles 'SO- smetti di essere malvagio' il
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.