Desativar permanentemente o serviço de inicialização

9

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

Eu quero desabilitar o Apache, porque eu usarei o Nginx.

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

Eu pensei que eu seria capaz de colocar algo em / 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á executando o upstart. Bem, olhei, e a maneira correta de desativar um serviço no upstart é adicionar um arquivo de substituição. Então eu corro:

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

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

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

Bem, não é isso que eu esperava ver. Talvez eu não esteja correndo atrás 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 pela sua ajuda.

    
por Max Bucknell 05.08.2013 / 15:50

2 respostas

14

A maneira como você desativa um serviço em praticamente qualquer distribuição derivada de RedHat é com o comando chkconfig :

# chkconfig httpd off

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

# service httpd stop

Esses comandos farão a coisa certa, independentemente de o sistema estar executando systemd , upstart ou baunilha SysVInit .

Por que vale a pena, apesar de executar upstart da maioria dos serviços no CentOS 6, na verdade, use os scripts legados init.d , localizados em /etc/rc.d/rc<RUNLEVEL>.d . Para esses serviços, chkconfig gerencia os links simbólicos em /etc/rc.d/init.d .

    
por 05.08.2013 / 16:06
5

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

Listar serviços disponíveis com seus estados

chkconfig --list

Desative o serviço htttpd no nível de execução 2345

chkconfig --level 2345 httpd off

    
por 05.08.2013 / 16:03