wie lade ich nginx - systemctl oder nginx-s neu?
Gibt es einen Unterschied zwischen dem Aufruf von
systemctl reload nginx
Und Aufruf von
nginx -s reload
?
Ich weiß, dass es neben systemd noch andere Init-Systeme wie SysV und Upstart gibt. Vielleicht gilt diese Frage auch für sie.
Ist es vorzuziehen, diesen Befehl über das Init-System auszuführen, oder kann ich nginx einfach selbst aufrufen?
Danke im Voraus
3 answers
Sie können herausfinden, was systemd reload nginx
tun wird, indem Sie sich die Option ExecReload=
im Abschnitt [Service]
in der Unit-Datei nginx.service
ansehen (befindet sich unter /usr/lib/systemd/system/nginx.service
auf meinem System):
$ systemctl cat nginx | grep ExecReload=
Oder durch Ausführen:
$ systemctl show nginx.service --property=ExecReload
Auf meinem System bekomme ich:
ExecReload=/usr/bin/kill -HUP $MAINPID
Von 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
Also werden systemctl reload nginx
und nginx -s reload
, fast, dasselbe tun.
Die Unterschiede sind:
-
systemctl reload nginx
führt den Befehl in einer sauberen Umgebung (und nicht dem aktuellen Benutzer) aus environment) -
systemctl reload
funktioniert für jeden Dienst, der es zulässt (der es in der Unit-Datei konfiguriert hat). Sie müssen sich keine dienstspezifischen Befehle merken. Dies ist noch interessanter, wenn Sie mehrere Instanzen eines Dienstes haben.
Die Verwendung von service
oder init.d
Skripten sind veraltete / veraltete Methoden, um dasselbe zu tun. Obwohl sie möglicherweise funktionieren, werden sie auf einem systemd-basierten System nicht mehr unterstützt oder empfohlen.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-08-10 20:23:09
Derzeit gibt es einen Unterschied zwischen Centos 7 und RHEL 7. Die Verwendung von systemctl reload nginx validiert Ihre Konfiguration NICHT.
Siehe folgenden Fehler: https://bugzilla.redhat.com/show_bug.cgi?id=1565377
Daher würde ich empfehlen, nginx-s reload zu verwenden oder Ihre Nginx-Unit-Datei zu aktualisieren, um den folgenden Reload-Befehl zu verwenden:
ExecReload=/usr/sbin/nginx -s reload
Https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-18 11:49:06
Wir hatten keinen Erfolg mit systemctl
. Um jedoch eine Nginx-Konfiguration neu zu laden, können Sie HUP
an den Master-Prozess[1] senden. Wir verwenden nur killall
(nein, es tötet nicht, es sendet ein Signal), um HUP
an alle Nginx-Prozesse zu senden. Ich nehme an, die Arbeiter ignorieren einfach den HUP:
sudo killall -s HUP nginx
Voila! Die neue Konfiguration wird geladen und angewendet.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-08-05 20:28:28