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.