Deshabilitar permanentemente el servicio Init

10

Acabo de aprovisionar un nuevo VPS con CentOS 6, y viene con Apache.

Quiero deshabilitar Apache, porque en su lugar usaré Nginx.

Sé que puedo eliminar la secuencia de comandos en /etc/init.d/, pero no quiero hacer eso, porque es una cosa común que vino con el sistema. Prefiero tener una forma elegante de deshabilitar el servicio.

Pensé que podría poner algo en / etc / inittab, pero 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:

Esto me lleva a creer que el sistema se está ejecutando desde el inicio. Bueno, miré, y la forma correcta de deshabilitar un servicio en el inicio es agregar un archivo de anulación. Entonces corro:

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

Y reiniciar mi servidor. ¡Pero httpd todavía se está ejecutando! Confundido por esto, decido comprobar si el servicio inicial es el servicio init, ejecutando

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

Bueno, eso no era lo que esperaba ver. Tal vez no estoy corriendo advenedizo después de todo. ¿Hay una forma definitiva de verificar? Y si estoy ejecutando init, ¿cuál es la forma recomendada de deshabilitar un servicio de forma permanente? Soy nuevo en todo esto, y parece que hay muchas opiniones conflictivas por ahí.

Gracias por toda tu ayuda.

Max Bucknell
fuente
¿Por qué no simplemente eliminar Apache si no lo vas a usar?
Frederik Nielsen
Porque podría querer usarlo en el futuro, para proxy de aplicaciones Python con mod_wsgi, o ejecutando PHP. Por ahora, no quiero usarlo. Y esto parece un problema que podría tener nuevamente en el futuro, con diferentes servicios también.
Max Bucknell

Respuestas:

16

La forma en que deshabilita un servicio en casi cualquier distribución derivada de RedHat es con el chkconfigcomando:

# chkconfig httpd off

Y para detener un servicio en ejecución:

# service httpd stop

Estos comandos Haz lo correcto, independientemente de si el sistema está funcionando systemd, upstarto de vainilla SysVInit.

Por lo que vale, a pesar de ejecutar la upstartmayoría de los servicios en CentOS 6, en realidad usan init.dscripts heredados , ubicados en /etc/rc.d/rc<RUNLEVEL>.d. Para estos servicios, chkconfigadministra los enlaces simbólicos en /etc/rc.d/init.d.

larsks
fuente
Descubrí esto buscando algo equivalente a update-rc.d en la respuesta de trillan. Estaba a punto de responder mi propia pregunta, pero me ganaste. Muchas gracias, larsks.
Max Bucknell
4

Deshabilite el servicio que no desea iniciar durante el inicio del sistema usando chkconfig .

Enumerar los servicios disponibles con sus estados.

chkconfig --list

Deshabilitar el servicio htttpd en runlevel 2345

chkconfig --level 2345 httpd off

clemente
fuente