Вы можете узнать, что systemd reload nginxбудет делать, посмотрев на ExecReload=опцию в [Service]разделе nginx.serviceфайла модуля (расположенного в /usr/lib/systemd/system/nginx.serviceмоей системе):
$ systemctl cat nginx | grep ExecReload=
Или запустив:
$ systemctl show nginx.service --property=ExecReload
В моей системе я получаю:
ExecReload=/usr/bin/kill -HUP $MAINPID
От 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
Так systemctl reload nginxи nginx -s reloadбудет, почти , делать то же самое.
Различия:
systemctl reload nginx выполнит команду в чистой среде (а не в текущей пользовательской среде);
systemctl reloadработает для любой службы, которая позволяет это (которая настроена в файле модуля). Не нужно помнить конкретные сервисные команды. Это еще более интересно, если у вас есть несколько экземпляров службы.
Использование serviceили init.dсценарии являются устаревшими / устаревшими способами сделать то же самое. Хотя они могут работать, они не поддерживаются и не рекомендуются в системной системе.
serviceилиinit.d, какsudo service nginx reload