Ви можете дізнатися, що 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