Meu servidor estava com uma carga alta e parei o Apache2 até que a carga diminuísse usando o killall -9 apache2. Ao iniciar o Apache2 recebi o erro:
*# /etc/init.d/apache2 restart * Reiniciando o servidor web apache2 httpd (pid 4457?) não em execução (98)Endereço já em uso: make_sock: não foi possível vincular ao endereço 0.0.0.0:80 nenhum soquete de escuta disponível, fechando down Não é possível abrir registros*
Eu então lsof | grep "*.www" e eliminou o processo usando a porta 80.
Minha pergunta é como um processo ainda pode usar a porta 80 mesmo depois de executar o comando kill all?
Responder1
http://httpd.apache.org/docs/2.2/stopping.html
Para parar ou reiniciar o Apache, você deve enviar um sinal para os processos httpd em execução. Existem duas maneiras de enviar os sinais. Primeiro, você pode usar o comando unix kill para enviar sinais diretamente aos processos.Você notará muitos executáveis httpd em execução no seu sistema, mas não deve enviar sinais para nenhum deles, exceto para o pai, cujo pid está no PidFile. Isso quer dizer que você nunca precisará enviar sinais para nenhum processo, exceto o pai. Existem quatro sinais que você pode enviar ao pai: TERM, USR1, HUP e WINCH, que serão descritos em breve.
Para enviar um sinal ao pai você deve emitir um comando como:
kill -TERM `cat /usr/local/apache2/logs/httpd.pid`
Minha ênfase.