Мой сервер имел высокую нагрузку, и я остановил Apache2, пока нагрузка не уменьшилась с помощью killall -9 apache2. При запуске Apache2 я получил ошибку:

* # /etc/init.d/apache2 restart * Перезапуск веб-сервера apache2 httpd (pid 4457?) не работает (98) Адрес уже используется: make_sock: невозможно привязать к адресу 0.0.0.0:80 нет доступных сокетов прослушивания, завершение работы Невозможно открыть журналы *

Я тогда лсоф | grep "* .www" и убил процесс, используя порт 80.

Мой вопрос: как процесс может использовать порт 80 даже после выполнения команды kill all?

1 ответ1

0

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

Чтобы остановить или перезапустить Apache, вы должны отправить сигнал запущенным процессам httpd. Есть два способа отправки сигналов. Во-первых, вы можете использовать команду unix kill для прямой отправки сигналов процессам. Вы заметите много исполняемых файлов httpd, работающих в вашей системе, но вы не должны посылать сигналы ни одному из них, кроме родительского, чей pid находится в PidFile. То есть вам никогда не нужно отправлять сигналы любому процессу, кроме родительского. Существует четыре сигнала, которые вы можете отправить родителю: TERM, USR1, HUP и WINCH, которые будут описаны ниже.

Чтобы отправить сигнал родителю, вы должны выполнить команду, такую как:

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

Мой акцент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .