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.