O servidor Apache é iniciado automaticamente após parar o serviço

6

O que pode fazer com que o httpd seja iniciado automaticamente após pará-lo?

Em um script bash eu preciso primeiro parar o servidor web apache. Este é o script:

apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"

Quando executo o script, ele imprime os processos do Apache até que não haja nenhum processo em execução e imprime [servidor Apache parado]

Em seguida, executar o comando pgrep httpd não imprime nada, mas se eu inserir um site hospedado pelo servidor, o pgrep httpd imprimirá alguns processos do httpd.

Este é o caminho certo para parar o apache? Por que ele inicia automaticamente depois de executar apachectl stop ? Se estiver relacionado a KeepAliveTime , como forçar a parada dos processos filhos em execução?

Edit: Isso também é verdade para executar os comandos service httpd stop ou apachectl stop na linha de comando.

    
por Omid 03.04.2014 / 19:44

3 respostas

2

upstart , o gerenciador de serviços, pode reiniciar o httpd se estiver definido como respawn .

apachectl stop pára o processo sem notificar upstart

Tente:

service httpd stop

A propósito, quando você emite qualquer um dos comandos stop like para o apache, ele irá parar de aceitar novas conexões. O gracefuls permitirá que ele complete todas as conexões abertas no momento.

    
por 03.04.2014 / 20:16
2

Confirmando um serviço

No CentOS 6, eu investigaria se o serviço httpd está acessível.

$ service --status-all |& grep httpd
httpd is stopped

Você pode desativar este serviço usando chkconfig :

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

$ sudo chkconfig httpd off

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

Mas continua começando quando eu o acesso?

Como você está lidando com o CentOS 6, provavelmente está usando o Upstart. Você pode ver se httpd o serviço está sob seu controle.

$ initctl list

Você o verá na lista, não tenho essa configuração para mostrar. Eu diria que, com base na sua descrição do problema, o seu sistema tem httpd definido assim:

httpd stop/waiting

O que, no meu entender, significa que se o Upstart vir esse serviço sendo acessado, ele será iniciado novamente. O Upstart manterá um script de serviço para httpd em /etc/init se esse for o caso. Você vai querer entrar nesse arquivo e desabilitar o serviço e recarregar a configuração. É provável que tenha uma seção respawn que está causando isso:

Exemplo

$ more /etc/init/prefdm.conf 
# prefdm - preferred display manager
#
# Starts gdm/xdm/etc by preference

start on stopped rc RUNLEVEL=5

stop on starting rc RUNLEVEL=[!5]

console output
respawn
respawn limit 10 120
exec /etc/X11/prefdm -nodaemon

Referências

  • Como você escreve scripts de inicialização do CentOS / a>
por 11.04.2014 / 02:43
0

Procure por /etc/inittab , pode ser que alguém o coloque para reaparecer.

    
por 07.04.2014 / 11:05