Você pode descobrir o que o systemd reload nginx fará observando a opção ExecReload= na seção [Service] no arquivo nginx.service unit (localizado em /usr/lib/systemd/system/nginx.service em meu sistema):
$ systemctl cat nginx | grep ExecReload=
Ou executando:
$ systemctl show nginx.service --property=ExecReload
No meu sistema, recebo:
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
Assim, systemctl reload nginx e nginx -s reload irão, quase , fazer o mesmo.
As diferenças são:
-
systemctl reload nginxexecutará o comando em um ambiente limpo (e não no ambiente atual do usuário); -
systemctl reloadfunciona para qualquer serviço que o permita (que foi configurado no arquivo da unidade). Não há necessidade de lembrar comandos específicos do serviço. Isso é ainda mais interessante se você tiver várias instâncias de um serviço.
Usar os scripts service ou init.d são formas legadas / obsoletas de fazer a mesma coisa. Embora possam funcionar, eles não são mais suportados nem recomendados em um sistema baseado em systemd.