Gibt es einen Unterschied zwischen Anrufen
systemctl reload nginx
und anrufen
nginx -s reload
?
Ich weiß, dass es neben systemd noch andere Init-Systeme wie SysV und Upstart gibt. Vielleicht trifft diese Frage auch auf sie zu.
Ist es vorzuziehen, diesen Befehl über das Init-System abzusetzen, oder kann ich einfach nginx selbst aufrufen?
Danke im Voraus
service
oderinit.d
, wiesudo service nginx reload
Antworten:
Sie können herausfinden, was getan
systemd reload nginx
wird, indem Sie dieExecReload=
Option im[Service]
Abschnitt in dernginx.service
Unit-Datei (/usr/lib/systemd/system/nginx.service
auf meinem System) überprüfen:Oder durch Laufen:
Auf meinem System bekomme ich:
Von
nginx(8)
:So
systemctl reload nginx
undnginx -s reload
wird fast dasselbe tun.Die Unterschiede sind:
systemctl reload nginx
führt den Befehl in einer sauberen Umgebung aus (und nicht in der aktuellen Benutzerumgebung);systemctl reload
funktioniert für jeden Dienst, der dies zulässt (der in der Gerätedatei konfiguriert ist). Keine Notwendigkeit, sich an dienstspezifische Befehle zu erinnern. Dies ist umso interessanter, wenn Sie mehrere Instanzen eines Dienstes haben.Die Verwendung von
service
oderinit.d
Skripten ist eine alte oder veraltete Methode, um dasselbe zu tun. Obwohl sie möglicherweise funktionieren, werden sie auf einem systembasierten System nicht mehr unterstützt oder empfohlen.quelle
Derzeit gibt es einen Unterschied zwischen Centos 7 und RHEL 7. Wenn Sie systemctl reload nginx verwenden, wird Ihre Konfiguration NICHT validiert.
Lesen Sie den 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:
https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff
quelle