В чем разница между перезагрузкой, перезагрузкой, грациозностью apache2?

Я использую apache2 для проекта, и мне интересно, какая именно разница между ними:

service apache2 restart
service apache2 reload
service apache2 graceful

?

Спасибо за ваши ответы.

Ответ 1

Основное различие между четырьмя различными способами остановки/перезапуска состоит в том, что основной процесс делает с его потоками и о себе.

Обратите внимание, что Apache рекомендует использовать apachectl -k в качестве команды, а для systemd команда заменяется на httpd -k

apachectl -k stop или httpd -k stop

Это сообщает процессу убить все его потоки, а затем выйти из

apachectl -k graceful или httpd -k graceful

Apache сообщит о том, что его потоки выходят из режима ожидания, а затем apache перезагружает конфигурацию (она не выходит сама), это означает, что статистика не reset.

apachectl -k restart или httpd -k restart

Это похоже на остановку, поскольку процесс уничтожает потоки, но затем процесс перезагружает файл конфигурации, а не убивает себя.

apachectl -k graceful-stop или httpd -k graceful-stop

Это действует как -k graceful, но вместо перезагрузки конфигурации он перестанет отвечать на новые запросы и будет жить только до тех пор, пока вокруг него будут старые потоки. Объединение этого с новым экземпляром httpd может быть очень мощным при одновременном запуске apache при обновлении файлов конфигурации.

Источник: https://httpd.apache.org/docs/2.4/stopping.html

Рекомендация: используйте -k graceful, если что-то не так с самим основным процессом, и в этом случае предпочтительными являются комбинации -k stop и -k start или -k graceful-stop и -k start.

Ответ 3

Кажется, что graceful и reload одинаковы для apache2

В /etc/init.d/apache2:

graceful | reload | force-reload)
# rest of the script