Disabilitare permanentemente il servizio Init


10

Ho appena eseguito il provisioning di un nuovo VPS con CentOS 6 e viene fornito con Apache.

Voglio disabilitare Apache, perché userò invece Nginx.

So che posso semplicemente eliminare lo script in /etc/init.d/, ma non voglio farlo, perché è una cosa di serie fornita con il sistema. Preferirei avere un modo grazioso di disabilitare il servizio.

Ho pensato che avrei potuto mettere qualcosa in / etc / inittab, ma inittab contiene:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:

Questo mi porta a credere che il sistema sia in fase di avvio. Bene, ho guardato, e il modo corretto di disabilitare un servizio in avvio è quello di aggiungere un file di sostituzione. Quindi corro:

% 'manual' > /etc/init/httpd.override

E riavvia il mio server. Ma httpd è ancora in esecuzione! Confuso da questo, decido di verificare che upstart sia il servizio init, eseguendo

% readlink /proc/1/exe
/sbin/init

Beh, non è quello che mi aspettavo di vedere. Forse non sto correndo all'inizio dopo tutto. C'è un modo preciso per verificare? E se sto eseguendo init, qual è il modo consigliato per disabilitare permanentemente un servizio? Sono nuovo in tutto questo e sembrano esserci molte opinioni contrastanti là fuori.

Grazie a tutti per il vostro aiuto.


Perché non rimuovere semplicemente Apache se non hai intenzione di usarlo?
— Frederik Nielsen il

Perché potrei voler usarlo in futuro, per il proxy delle applicazioni Python con mod_wsgi o per eseguire PHP. Per ora, non voglio usarlo. E questo sembra un problema che potrei avere di nuovo in futuro, anche con servizi diversi.
— Max Bucknell,

Risposte:


16

Il modo in cui disabiliti un servizio in quasi tutte le distribuzioni derivate da RedHat è con il chkconfigcomando:

# chkconfig httpd off

E per interrompere un servizio in esecuzione:

# service httpd stop

Questi comandi Fa la cosa giusta, indipendentemente dal fatto che il sistema è in esecuzione systemd, upstarto di vaniglia SysVInit.

Per quello che vale, nonostante la upstartmaggior parte dei servizi in CentOS 6 utilizzi effettivamente init.dscript legacy , situati in /etc/rc.d/rc<RUNLEVEL>.d. Per questi servizi, chkconfiggestisce i collegamenti simbolici in /etc/rc.d/init.d.


L'ho scoperto cercando qualcosa di equivalente a update-rc.d dalla risposta di trillan. Stavo per rispondere alla mia domanda, ma mi hai battuto. Grazie mille, Larry.
— Max Bucknell,

4

Disabilita il servizio che non vuoi avviare durante l'avvio del sistema usando chkconfig .

Elencare i servizi disponibili con i loro stati

chkconfig --list

Disabilita il servizio htttpd nel runlevel 2345

chkconfig --level 2345 httpd off

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.