Mi servidor tenía una carga alta y detuve Apache2 hasta que la carga disminuyó usando killall -9 apache2. Al iniciar Apache2 recibí el error:
*# /etc/init.d/apache2 restart * Reiniciando el servidor web apache2 httpd (pid 4457?) no se ejecuta (98) La dirección ya está en uso: make_sock: no se pudo vincular a la dirección 0.0.0.0:80 no hay sockets de escucha disponibles, cerrándose abajo No se pueden abrir registros*
Entonces lsof | grep "*.www" y eliminó el proceso usando el puerto 80.
Mi pregunta es ¿cómo puede un proceso seguir usando el puerto 80 incluso después de ejecutar el comando matar todo?
Respuesta1
http://httpd.apache.org/docs/2.2/stopping.html
Para detener o reiniciar Apache, debe enviar una señal a los procesos httpd en ejecución. Hay dos formas de enviar las señales. Primero, puede usar el comando kill de Unix para enviar señales directamente a los procesos.Notarás que hay muchos ejecutables httpd ejecutándose en tu sistema, pero no debes enviar señales a ninguno de ellos excepto al padre., cuyo pid está en PidFile. Es decir, nunca debería necesitar enviar señales a ningún proceso excepto al padre. Hay cuatro señales que puede enviar al padre: TERM, USR1, HUP y WINCH, que se describirán en un momento.
Para enviar una señal a los padres, debe emitir un comando como:
kill -TERM `cat /usr/local/apache2/logs/httpd.pid`
Mi énfasis.