Existe uma diferença entre chamar
systemctl reload nginx
e chamando
nginx -s reload
?
Eu sei que, além do systemd, existem outros sistemas init como o SysV e o Upstart. Então, talvez essa pergunta se aplique a eles também.
É preferível emitir este comando através do sistema init ou posso apenas chamar o próprio nginx?
desde já, obrigado
service
ouinit.d
, comosudo service nginx reload
Respostas:
Você pode descobrir o que
systemd reload nginx
fará consultando aExecReload=
opção na[Service]
seção nonginx.service
arquivo da unidade (localizada/usr/lib/systemd/system/nginx.service
em meu sistema):Ou executando:
No meu sistema, recebo:
De
nginx(8)
:Assim,
systemctl reload nginx
enginx -s reload
irá, quase , fazer a mesma coisa.As diferenças são:
systemctl reload nginx
executará o comando em um ambiente limpo (e não no ambiente atual do usuário);systemctl reload
funciona para qualquer serviço que permita (que o tenha configurado no arquivo da unidade). Não há necessidade de lembrar comandos específicos de serviço. Isso é ainda mais interessante se você tiver várias instâncias de um serviço.O uso
service
ouinit.d
scripts são maneiras herdadas / obsoletas de fazer a mesma coisa. Embora possam funcionar, eles não são mais suportados nem recomendados em um sistema baseado em systemd.fonte
Atualmente, há uma diferença no Centos 7 e no RHEL 7. O uso de systemctl reload nginx NÃO validará sua configuração.
Veja o seguinte bug: https://bugzilla.redhat.com/show_bug.cgi?id=1565377
Portanto, aconselho o uso do nginx -s reload ou a atualização do arquivo da unidade nginx para usar o seguinte comando reload:
https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff
fonte