как перезагрузить nginx - systemctl или nginx -s?


22

Есть ли разница между звонками

systemctl reload nginx

и звонит

nginx -s reload

?

Я знаю, что помимо systemd существуют и другие системы инициализации, такие как SysV и Upstart. Так что, возможно, этот вопрос относится и к ним.

Желательно ли вводить эту команду через систему инициализации или я могу просто вызвать сам nginx?

заранее спасибо


1
На самом деле, если ваша система поддерживает это, я бы предпочел использовать serviceили init.d, какsudo service nginx reload
Мохаммад AbuShady

Ответы:


21

Вы можете узнать, что systemd reload nginxбудет делать, посмотрев на ExecReload=опцию в [Service]разделе nginx.serviceфайла модуля (расположенного в /usr/lib/systemd/system/nginx.serviceмоей системе):

$ systemctl cat nginx | grep ExecReload=

Или запустив:

$ systemctl show nginx.service --property=ExecReload

В моей системе я получаю:

ExecReload=/usr/bin/kill -HUP $MAINPID

От nginx(8):

-s signal      Send a signal to the master process. The argument signal
               can be one of: stop, quit, reopen, reload. The following
               table shows the corresponding system signals:

               stop    SIGTERM
               quit    SIGQUIT
               reopen  SIGUSR1
               reload  SIGHUP

Так systemctl reload nginxи nginx -s reloadбудет, почти , делать то же самое.

Различия:

  • systemctl reload nginx выполнит команду в чистой среде (а не в текущей пользовательской среде);
  • systemctl reloadработает для любой службы, которая позволяет это (которая настроена в файле модуля). Не нужно помнить конкретные сервисные команды. Это еще более интересно, если у вас есть несколько экземпляров службы.

Использование serviceили init.dсценарии являются устаревшими / устаревшими способами сделать то же самое. Хотя они могут работать, они не поддерживаются и не рекомендуются в системной системе.


3

В настоящее время существует разница в Centos 7 и RHEL 7. Использование systemctl reload nginx НЕ подтвердит вашу конфигурацию.

Смотрите следующую ошибку: https://bugzilla.redhat.com/show_bug.cgi?id=1565377

Поэтому я бы посоветовал использовать nginx -s reload или обновить файл модуля nginx, чтобы использовать следующую команду reload:

ExecReload=/usr/sbin/nginx -s reload

https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.