Pare o Apache normalmente

23

Existe uma maneira de parar o servidor Apache sem encerrar a execução de solicitações, basicamente uma maneira de dizer a ele - não aceite mais conexões e desligue quando terminar as atuais?

php_nub_qq
fonte

Respostas:

12

Use apachectl -k graceful-stopa partir daqui :

O sinal WINCH ou de parada normal faz com que o processo pai avise os filhos a sair após a solicitação atual (ou a sair imediatamente se não estiverem servindo nada). O pai removerá seu PidFile e deixará de ouvir em todas as portas. O pai continuará executando e monitorará os filhos que estão lidando com solicitações. Depois que todos os filhos tiverem finalizado e encerrado ou o tempo limite especificado pelo GracefulShutdownTimeout for atingido, o pai também sairá.

B. Miller
fonte
1

Lembre-se de que o sys-v init costumava fazer paradas graciosas por padrão e tinha parada de força como uma opção extra. Uma opção "especial" para interromper normalmente é necessária apenas se você executar um gerenciador de processos personalizado que normalmente mata processos.

John Keates
fonte
Essa resposta pode dar a impressão de que, por systemdnão ser um gerenciador de processos personalizado, ele não elimina o processo. No entanto, por padrão, o systemd também executa um stopnot a graceful-stopfor apache.
B. Miller
4
@ B.Miller se o seu systemd executar uma parada em vez de uma parada normal, é um bug específico do SO que precisa ser registrado. O Arch Linux e o CentOS 7 realizam paradas simples.
Harald
O Debian também faz uma parada elegante
John Keates
2
@JohnKeates interessante ... talvez esse seja o Ubuntu 18.04 específico. 18.04 usa o comando stop/usr/sbin/apachectl stop
B. Miller