Desativar permanentemente o serviço Init

10

Acabei de provisionar um novo VPS executando o CentOS 6 e ele vem com o Apache.

Eu quero desativar o Apache, porque usarei o Nginx.

Eu sei que posso simplesmente excluir o script em /etc/init.d/, mas não quero fazer isso, porque é uma coisa comum que veio com o sistema. Eu preferiria ter uma maneira graciosa de desativar o serviço.

Eu pensei que seria capaz de colocar algo no / etc / inittab, mas o inittab contém:

# 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:

Isso me leva a acreditar que o sistema está iniciando. Bem, eu olhei, e a maneira correta de desativar um serviço no inicio é adicionar um arquivo de substituição. Então eu corro:

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

E reinicie meu servidor. Mas o httpd ainda está em execução! Confuso com isso, decido verificar se o upstart é o serviço init, executando

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

Bem, não era isso que eu esperava ver. Talvez eu não esteja correndo bem antes de tudo. Existe uma maneira definitiva de verificar? E se eu estiver executando o init, qual é a maneira recomendada de desativar um serviço permanentemente? Eu sou novo em tudo isso, e parece haver muitas opiniões conflitantes por aí.

Obrigado a todos por sua ajuda.

Max Bucknell
fonte
Por que não remover o apache se você não vai usá-lo?
Frederik Nielsen
Porque eu posso querer usá-lo no futuro, para proxy de aplicativos Python com mod_wsgi ou executando PHP. Por enquanto, não quero usá-lo. E isso parece ser um problema que eu poderia ter novamente no futuro, com serviços diferentes também.
precisa

Respostas:

16

A maneira como você desabilita um serviço em praticamente qualquer distribuição derivada do RedHat é com o chkconfigcomando:

# chkconfig httpd off

E para interromper um serviço em execução:

# service httpd stop

Estes comandos Faça a coisa certa, independentemente de seu sistema estiver em execução systemd, upstartou baunilha SysVInit.

Vale a pena, apesar de executar a upstartmaioria dos serviços no CentOS 6, na verdade, usar init.dscripts herdados , localizados em /etc/rc.d/rc<RUNLEVEL>.d. Para esses serviços, chkconfiggerencia os links simbólicos em /etc/rc.d/init.d.

larsks
fonte
Descobri isso procurando algo equivalente ao update-rc.d da resposta de trillan. Estava prestes a responder minha própria pergunta, mas você me venceu. Muito obrigado, larsks.
Max Bucknell
4

Desative o serviço que você não deseja iniciar durante a inicialização do sistema usando chkconfig .

Listar os serviços disponíveis com seus estados

chkconfig --list

Desativar o serviço activationtpd no nível de execução 2345

chkconfig --level 2345 httpd off

clemente
fonte