Apache-Neustart fehlgeschlagen

Apache-Neustart fehlgeschlagen

Mein Server war stark ausgelastet und ich habe Apache2 mit killall -9 apache2 gestoppt, bis die Last nachließ. Beim Starten von Apache2 erhielt ich den Fehler:

*# /etc/init.d/apache2 restart * Neustart des Webservers Apache2. httpd (PID 4457?) wird nicht ausgeführt (98). Adresse wird bereits verwendet: make_sock: konnte nicht an Adresse 0.0.0.0:80 gebunden werden. Keine Listening-Sockets verfügbar, wird heruntergefahren. Protokolle können nicht geöffnet werden.*

Ich habe dann lsof | grep "*.www" ausgeführt und den Prozess über Port 80 beendet.

Meine Frage lautet: Wie kann ein Prozess weiterhin Port 80 verwenden, selbst nachdem ich den Befehl „Kill All“ ausgeführt habe?

Antwort1

http://httpd.apache.org/docs/2.2/stopping.html

Um Apache zu stoppen oder neu zu starten, müssen Sie ein Signal an die laufenden httpd-Prozesse senden. Es gibt zwei Möglichkeiten, die Signale zu senden. Erstens können Sie den Unix-Befehl kill verwenden, um Signale direkt an die Prozesse zu senden.Sie werden feststellen, dass auf Ihrem System viele ausführbare httpd-Dateien ausgeführt werden, aber Sie sollten an keine von ihnen Signale senden, außer an die übergeordnete, dessen PID sich in der Pid-Datei befindet. Das heißt, Sie müssen niemals Signale an einen anderen Prozess als den übergeordneten Prozess senden. Es gibt vier Signale, die Sie an den übergeordneten Prozess senden können: TERM, USR1, HUP und WINCH, die in Kürze beschrieben werden.

Um ein Signal an das übergeordnete Element zu senden, sollten Sie einen Befehl wie den folgenden eingeben:

  kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

Meine Hervorhebung.

verwandte Informationen