Y a-t-il une différence entre appeler
systemctl reload nginx
et appeler
nginx -s reload
?
Je sais que, outre systemd, il existe d'autres systèmes d'initialisation tels que SysV et Upstart. Alors peut-être que cette question s'applique à eux aussi.
Est-il préférable d’émettre cette commande via le système init ou puis-je appeler nginx lui-même?
Merci d'avance
Vous pouvez savoir ce que systemd reload nginx
fera en consultant l'option ExecReload=
dans la section [Service]
du fichier unité nginx.service
(situé à /usr/lib/systemd/system/nginx.service
sur mon système):
$ systemctl cat nginx | grep ExecReload=
Ou en exécutant:
$ systemctl show nginx.service --property=ExecReload
Sur mon système, je reçois:
ExecReload=/usr/bin/kill -HUP $MAINPID
De 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
Ainsi, systemctl reload nginx
et nginx -s reload
feront presque la même chose.
Les différences sont:
systemctl reload nginx
exécutera la commande dans un environnement propre (et non dans l'environnement utilisateur actuel);systemctl reload
fonctionne pour tout service qui le permet (qui l'a configuré dans le fichier d'unité). Pas besoin de se rappeler des commandes spécifiques au service. Ceci est encore plus intéressant si vous avez plusieurs instances d'un service.L'utilisation de scripts service
ou init.d
est une méthode héritée/obsolète de faire la même chose. Bien qu'ils puissent fonctionner, ils ne sont plus supportés ni recommandés sur un système basé sur systemd.
Il existe actuellement une différence entre Centos 7 et RHEL 7. L'utilisation de systemctl reload nginx NE validera PAS votre configuration.
Voir le bogue suivant: https://bugzilla.redhat.com/show_bug.cgi?id=1565377
Je conseillerais donc d'utiliser nginx -s reload ou de mettre à jour votre fichier d'unité nginx pour utiliser la commande de rechargement suivante:
ExecReload=/usr/sbin/nginx -s reload
https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff