
Обновлять:Отвечая на комментарий:
проверьте процессы 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
Спасибо!
решение1
Это может иногда происходить, когда 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 и т. д.
решение2
Убедитесь, что у вас есть необходимые разрешения для остановки службы.
Если вы запустите:
service apache2 stop
вы не получите никакой ошибки, просто:
* Остановка веб-сервера apache2
Пытаться:
sudo service apache2 stop
решение3
У меня тоже была такая же проблема, и я попробовал следующее:
sudo apache2ctl stop
остановить обслуживание и
sudo apache2ctl start
чтобы начать его снова.
У меня это работает, любые предложения приветствуются.
решение4
Процессы можно запросить (отправивсигналим) для остановки. kill
Команда — это способ сделать это. Если вы знаете идентификатор процесса (PID), его можно запросить, выполнив команду ниже в терминале:
kill PID_OF_YOUR_PROCESS
В приведенном выше примере PID по умолчанию отправляет сигнал TERM (код 15). Вы можете посмотреть коды сигналов встраница руководства kill( man kill
).
Когда программа игнорирует сигнал TERM, отправленный им, все еще возможно применить немного больше давления, отправив сигнал KILL (код 9). Этот сигнал используется в качестве крайней меры, поскольку процесс может не сохранить несохраненные данные.
Указание a -SIGNAL_CODE
в качестве первого параметра перед идентификатором процесса отправит процессу определенный сигнал. Другая полезная функция команды kill
заключается в том, что вы можете указать больше PID, как в следующем примере:
kill -9 PID1 PID2 PID3 PID4
Попробуйте завершить процессы Apache с помощью kill -9
строки. Они должны остановиться, если только что-то не помешает им это сделать.