Это вывод команды ps -A |grep -i apache2
:
xxxx@debian:~$ ps -A |grep -i apache2
2362 ? 00:00:01 apache2
2365 ? 00:00:00 apache2
2367 ? 00:00:00 apache2
2369 ? 00:00:00 apache2
Какой правильный pid при использовании команды kill
?
Потому что именно так работает Apache: он запускается от имени пользователя root, а затем порождает «детей», которые запускаются от имени обычного пользователя. С точки зрения безопасности это очень хороший подход, так как пользователь apache2 не должен блокировать вашу систему.
Из руководства:
Один процесс управления отвечает за запуск дочерних процессов, которые прослушивают соединения и обслуживают их, когда они поступают. Apache httpd всегда пытается поддерживать несколько резервных или незанятых серверных процессов, которые готовы обслуживать входящие запросы. Таким образом, клиентам не нужно ждать, пока новые дочерние процессы будут разветвлены, прежде чем их запросы будут обработаны.
StartServers, MinSpareServers, MaxSpareServers и MaxRequestWorkers регулируют, как родительский процесс создает дочерние элементы для обслуживания запросов. В целом, Apache httpd очень саморегулируемый, поэтому большинству сайтов не нужно настраивать эти директивы по умолчанию. Сайты, которые должны обслуживать более 256 одновременных запросов, могут нуждаться в увеличении MaxRequestWorkers, в то время как сайты с ограниченной памятью могут нуждаться в уменьшении MaxRequestWorkers для предотвращения перегрузки сервера (подкачки памяти на диск и обратно). Дополнительная информация о создании процесса настройки приведена в документации по подсказкам производительности.
Теперь об этом:
Какой правильный pid, когда я использую команду kill?
Нет необходимости уничтожать запросы apache. Я бы предложил использовать sudo service apache restart
и не убивать ничего, связанного с apache. Изящный перезапуск службы всегда следует выбирать вместо убийства.
Apache запускает автоматически некоторые дочерние процессы, которые apache могут ответить на несколько запросов быстрее. Таким образом, демону не нужно создавать новый процесс для каждого нового запроса.
У такого дочернего процесса есть жизненный цикл, сконфигурированный несколькими директивами в вашей конфигурации apache.
Вы можете увидеть иерархию процессов, когда вы вызываете ps
следующим образом:
root@host:~$ ps faux | grep apache
root 3122 0.0 0.5 37164 11172 ? Ss Aug09 1:55 /usr/sbin/apache2 -k start
www-data 21970 0.0 0.8 43636 17060 ? S Nov03 0:41 \_ /usr/sbin/apache2 -k start
www-data 27484 0.0 0.8 43372 16660 ? S 10:41 0:04 \_ /usr/sbin/apache2 -k start
www-data 29631 0.0 0.7 43132 16360 ? S 13:36 0:02 \_ /usr/sbin/apache2 -k start
www-data 29632 0.0 0.5 37644 10888 ? S 13:36 0:03 \_ /usr/sbin/apache2 -k start
www-data 29696 0.0 0.8 43380 16644 ? S 13:42 0:02 \_ /usr/sbin/apache2 -k start
www-data 30025 0.0 0.7 42584 15864 ? S 14:10 0:02 \_ /usr/sbin/apache2 -k start
www-data 30026 0.0 0.8 43968 17216 ? S 14:10 0:02 \_ /usr/sbin/apache2 -k start
www-data 30092 0.0 0.7 43348 16556 ? S 14:13 0:01 \_ /usr/sbin/apache2 -k start
www-data 30184 0.0 0.8 43636 16884 ? S 14:18 0:01 \_ /usr/sbin/apache2 -k start
www-data 30235 0.0 0.7 42576 15836 ? S 14:23 0:01 \_ /usr/sbin/apache2 -k start
Так что вам просто нужно «убить» родительский процесс. Но в современных современных дистрибутивах linux мы останавливаем демонов более экологичным способом. Чтобы остановить демон apache со всеми его дочерними процессами:
sudo service apache stop