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 comme 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 simplement appeler nginx lui-même?
Merci d'avance
service
ouinit.d
, commesudo service nginx reload
Réponses:
Vous pouvez découvrir ce qui
systemd reload nginx
va faire en regardant l'ExecReload=
option dans la[Service]
section dans lenginx.service
fichier d'unité (situé sur/usr/lib/systemd/system/nginx.service
sur mon système):Ou en exécutant:
Sur mon système, je reçois:
De
nginx(8)
:Ainsi
systemctl reload nginx
etnginx -s reload
fera presque la même chose.Les différences sont les suivantes:
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 souvenir des commandes spécifiques au service. C'est encore plus intéressant si vous disposez de plusieurs instances d'un service.L'utilisation de scripts
service
ouinit.d
sont des méthodes héritées / obsolètes de faire la même chose. Bien qu'ils puissent fonctionner, ils ne sont plus pris en charge ni recommandés sur un système basé sur systemd.la source
Actuellement, il existe une différence sur 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 vous conseille donc d'utiliser nginx -s reload ou de mettre à jour votre fichier d'unité nginx pour utiliser la commande de rechargement suivante:
https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff
la source