Не в состоянии остановить процессы Apache

16

Обновление: Ответ на комментарий:

проверьте процессы apache:

$ ps a | grep apache 3
grep: 3: No such file or directory
$ ps a | grep apache
 4514 pts/0    S+     0:00 grep --color=auto apache
$ ps a | grep apache2
 4516 pts/0    S+     0:00 grep --color=auto apache2

проверка журнала ошибок apache

$ tail /var/log/apache2/error.log
[Sun Aug 07 03:14:19 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 03:13:58 2011] [notice] Graceful restart requested, doing restart
[Mon Aug 08 03:14:00 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 09:03:16 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 08 09:05:47 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations

Оригинал: я остановил apache, но почему он все еще имеет такое же количество запущенных процессов?

$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2
$ /etc/init.d/apache2 stop
 * Stopping web server apache2                            [ OK ] 
$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2

Благодарность!

StackExchange для всех
источник
(Извините, я не могу комментировать, потому что у меня недостаточно повторений.) 1. Веб-сервер все еще доступен через веб-браузер? 2. Проверьте состояние ваших процессов. Возможно, они стали «процессами зомби» ps a | grep apache 3. Проверьте журналы ошибок, может быть полезен хвост /var/log/apache/error.log
SamK
1. Я использую Firefox. Это мой ноутбук. 2 и 3 см. Мое обновление.
StackExchange для всех
Вы пробовали этот 'apache2 -k stop' или 'apache2 -k restart'? или перезагрузка вашей системы?
blade19899 10.09.12

Ответы:

28

Это может происходить иногда, когда Apache отказывается красиво останавливаться или имеет Зомби-процессы . Для первого вы можете убить все запущенные процессы с помощью sudo killall -9 apache2; однако для последнего вам просто нужно подождать, пока они уйдут. В случае, если Apache не хочет красиво останавливаться, вы действительно захотите выяснить, что происходит. Однако выяснить, что именно происходит, может быть сложно.

Интерактивность straceидентификатора процесса может дать представление о том, какие сайты ведут себя и вызывают проблемы. С вашего выше ps -Aвы можете проверить первый процесс с

strace -p 1663

Это прикрепит к трассировке стека запущенных процессов, обеспечивая оперативный вывод происходящего. В любое время вы можете Ctrl+C

Дополнительным ресурсом является основной журнал ошибок для Apache, его можно найти в /var/log/apache2/error.logразделе. Вы захотите получить приличный кусок журнала и просмотреть его для деталей. Если проблема не решена

tail -f /var/log/apache2/error.log

Это похоже на straceзапуск в реальном времени. Для последних N строк замените -fна -#где #положительное число, например 50, 100, 282 и т. Д.

Марко Чеппи
источник
7

Убедитесь, что у вас есть соответствующие разрешения для остановки службы.

Если вы запускаете:

service apache2 stop

вы не получите никакой ошибки просто:

* Остановка веб-сервера apache2

Пытаться:

sudo service apache2 stop      
jeremyforan
источник
если не хватает памяти или почти полный обмен данными, это не удастся, единственное решение
Джеймс Тан
3

У меня тоже была такая же проблема, и я попробовал следующее:

sudo apache2ctl stop

чтобы остановить службу, и

sudo apache2ctl start

чтобы начать это снова.

Это работает для меня, любые возможные предложения приветствуются.

Rudhin
источник
1

Команда systemctl stop apache2сработала для меня.

IMTHATGUY P
источник
0

Процессы можно попросить (отправив им сигнал ) остановить. Команда killэто способ сделать это. Если вам известен идентификатор процесса (PID), его можно легко задать, выполнив следующую команду в терминале:

kill PID_OF_YOUR_PROCESS

Приведенный выше пример отправляет PID сигнал TERM по умолчанию (код 15). Вы можете посмотреть коды сигналов в справочной странице kill ( man kill).

Когда программа игнорирует отправленный им сигнал TERM, все равно можно применить немного большее давление, отправив сигнал KILL (код 9). Этот сигнал используется в качестве крайней меры, поскольку процесс может не сохранять несохраненные данные.

Указание в -SIGNAL_CODEкачестве первого параметра перед идентификатором процесса отправит процессу определенный сигнал. Еще одна полезная функция killкоманды - вы можете указать больше идентификаторов PID, как в следующем примере:

kill -9 PID1 PID2 PID3 PID4

Попробуйте завершить процессы Apache, используя kill -9строку. Они должны остановиться, если что-то не мешает им сделать это.

Шон Кимбалл
источник
Если читатель не знаком с командой kill, у него почти нет шансов узнать, как найти PID процесса apache2.
Макс Барракло
0

У меня была та же проблема, но вы не можете просто выполнить одну service apache2 stopкоманду - вам нужно выполнить один процесс PER . Затем вы МОЖЕТЕ добавить sudoфронт в случае, если вы вошли в какую-то нечетную учетную запись, которая нуждается в этом, поэтому, если вы видите 9 запущенных процессов, сделайте 9sudo service apache2 stop

Отлично сработало для меня.

Питер
источник
-2

После установки nginx мой apache перестал работать правильно. Кажется, в некоторых случаях Apache путает с nginx. Просто удали nginx

sudo apt-get purge nginx nginx-common
sudo apt-get autoremove
Манвел
источник