Я пытаюсь решить досадную проблему. У нас настроен сервер с nginx в качестве основного интерфейса, а затем Apache2 в качестве бэкенда для запуска наших сценариев Perl. Я борюсь с переписыванием некоторых скриптов Perl (поскольку они привыкли работать на гораздо более старой версии Perl), но у меня чертовски много работы с Apache. Когда я бегу:
service apache2 stop
Кажется, запускается:
root@admin:/home/user/web/example.com/logs# service apache2 stop
root@admin:/home/user/web/example.com/logs#
Но на самом деле он все еще работает! Команда его запуска:
/etc/init.d/apache2 stop
Если я запустил это вручную, я получу:
root@admin:/home/user/web/example.com/logs# /etc/init.d/apache2 stop
[ ok ] Stopping apache2 (via systemctl): apache2.service.
.. пока я захожу в браузер и перезагружаю страницу, она все равно загружается !!!!! (что означает, что Apache запущен)
У кого-нибудь есть предложения, где я могу искать? Это сводит меня с ума! Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.
Я вижу, что запущено несколько процессов:
[] ps aux
root 5948 1.4 0.7 307664 91548 ? Ss 13:32 0:00 /usr/sbin/apache2 -k start
www-data 5952 0.8 0.9 371080 111964 ? S 13:32 0:00 /usr/sbin/apache2 -k start
www-data 5953 0.6 0.8 369416 110012 ? S 13:32 0:00 /usr/sbin/apache2 -k start
www-data 5954 0.5 0.8 369416 110012 ? S 13:32 0:00 /usr/sbin/apache2 -k start
www-data 5955 0.6 0.8 369416 110012 ? S 13:32 0:00 /usr/sbin/apache2 -k start
www-data 5956 0.1 0.7 343800 90276 ? S 13:32 0:00 /usr/sbin/apache2 -k start
www-data 5959 0.0 0.6 307688 79692 ? S 13:32 0:00 /usr/sbin/apache2 -k start
ОБНОВИТЬ: Как и предполагалось, я попытался использовать это, чтобы убить его:
root@admin:~# pgrep apache2 | xargs kill -9
root@admin:~# pgrep apache2 | xargs kill -9
root@admin:~# pgrep apache2 | xargs kill -9
root@admin:~# pgrep apache2 | xargs kill -9
root@admin:~# pgrep apache2 | xargs kill -9
root@admin:~# pgrep apache2 | xargs kill -9
... но сразу после этого я снова вижу это! (все с одинаковыми идентификаторами)
root@admin:~# ps aux | grep apache
root 6080 0.4 0.7 307724 92052 ? Ss 13:34 0:00 /usr/sbin/apache2 -k start
www-data 6084 0.2 0.8 369400 110024 ? S 13:34 0:00 /usr/sbin/apache2 -k start
www-data 6085 0.2 0.8 369400 110024 ? S 13:34 0:00 /usr/sbin/apache2 -k start
www-data 6086 0.1 0.8 369392 110240 ? S 13:34 0:00 /usr/sbin/apache2 -k start
www-data 6087 0.1 0.8 369400 110024 ? S 13:34 0:00 /usr/sbin/apache2 -k start
www-data 6088 0.1 0.8 369400 110244 ? S 13:34 0:00 /usr/sbin/apache2 -k start
www-data 6400 0.3 0.8 369400 110024 ? S 13:35 0:00 /usr/sbin/apache2 -k start
root 6520 0.0 0.0 14224 972 pts/0 S+ 13:37 0:00 grep apache
ОБНОВЛЕНИЕ 2:
root@admin:~# killall -9 apache2
apache2: no process found
root@admin:~# ps aux | grep apache2
root 6977 1.2 0.8 315020 99236 ? Ss 13:41 0:00 /usr/sbin/apache2 -k start
www-data 6981 0.4 0.9 376408 117364 ? S 13:41 0:00 /usr/sbin/apache2 -k start
www-data 6982 0.4 0.9 376408 117364 ? S 13:41 0:00 /usr/sbin/apache2 -k start
www-data 6983 0.4 0.9 376408 117364 ? S 13:41 0:00 /usr/sbin/apache2 -k start
www-data 6984 0.5 0.9 376408 117364 ? S 13:41 0:00 /usr/sbin/apache2 -k start
www-data 6985 0.0 0.7 315044 87100 ? S 13:41 0:00 /usr/sbin/apache2 -k start
www-data 6988 0.0 0.7 315044 87100 ? S 13:41 0:00 /usr/sbin/apache2 -k start
root 7048 0.0 0.0 14224 948 pts/0 S+ 13:42 0:00 grep apache2
Может, процесс почему-то завис. Вы пробовали kill -9
и PID идентификатора процесса apache2?
В качестве альтернативы вы можете запустить пару раз эту команду:
pgrep apache2 | xargs kill -9
Затем попробуйте запустить его с помощью /etc/init.d/apache2 start и посмотрите, запустится ли он. После этого вы можете взглянуть на свои журналы apache и посмотреть, сможете ли вы найти какую-либо полезную информацию, которую можно было бы использовать для дальнейшего исследования ...
Я наткнулся на ту же проблему, и шаги, которые вы предприняли, мне тоже не помогли. Что сработало для меня, так это убить процесс, отвечающий за кеширование, после того, как я остановил сервер:
sudo service apache2 stop
ps aux | grep apache
www-data 1671 0.0 0.0 19904 172 ? Ss 10:55 0:00
/usr/bin/htcacheclean -d 120 -p /var/cache/apache2/mod_cache_disk -l 300M -n
kill 1671
Затем после очистки кеша браузера выполнение sudo service apache2 stop/start
работал как положено.
Это сработало для меня:
sudo kill -15 processID
где processID - это верхний родительский элемент (скорее всего, наименьшее число) в списке процессов, возобновляемом:
ps -ef | grep apache2