17

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

systemctl reload nginx

и звонит

nginx -s reload

?

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

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

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

2 ответа2

19

Вы можете узнать, что будет делать 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 является устаревшим / устаревшим способом сделать то же самое. Хотя они могут работать, они не поддерживаются и не рекомендуются в системной системе.

2

В настоящее время есть разница в 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .