як перезавантажити nginx - systemctl або nginx -s?


24

Чи є різниця між дзвінками

systemctl reload nginx

і дзвонить

nginx -s reload

?

Я знаю, що крім systemd, існують і інші системи init, такі як SysV та Upstart. Тож, можливо, це питання стосується і них.

Чи бажано видавати цю команду через систему init чи я можу просто викликати nginx?

Спасибі заздалегідь


1
Насправді, якщо ваша система це підтримує, я вважаю за краще використовувати serviceабо init.d, як-отsudo service nginx reload
Мохаммед АбуШаді,

Відповіді:


23

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


5

В даний час існує різниця у Centos 7 та RHEL 7. Використання systemctl reload nginx НЕ перевірить вашу конфігурацію.

Дивіться таку помилку: https://bugzilla.redhat.com/show_bug.cgi?id=1565377

Тому я б радив використовувати nginx -s для перезавантаження або оновлення файлу nginx-одиниці для використання наступної команди перезавантаження:

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.