¿Cómo recargar nginx - systemctl o nginx -s?

24

¿Hay alguna diferencia entre llamar

systemctl reload nginx

y llamando

nginx -s reload

?

Sé que, además de systemd, hay otros sistemas init como SysV y Upstart. Entonces, tal vez esta pregunta también se aplica a ellos.

¿Es preferible emitir este comando a través del sistema init o simplemente puedo llamar a nginx?

Gracias por adelantado

luna llena
fuente
1
En realidad, si su sistema lo admite, preferiría usar serviceo init.d, comosudo service nginx reload
Mohammad AbuShady

Respuestas:

23

Puede averiguar qué systemd reload nginxhará mirando la ExecReload=opción en la [Service]sección en el nginx.servicearchivo de la unidad (ubicado en /usr/lib/systemd/system/nginx.servicemi sistema):

$ systemctl cat nginx | grep ExecReload=

O ejecutando:

$ systemctl show nginx.service --property=ExecReload

En mi sistema, obtengo:

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

Así systemctl reload nginxy nginx -s reload, casi , haremos lo mismo.

Las diferencias son:

  • systemctl reload nginx ejecutará el comando en un entorno limpio (y no en el entorno del usuario actual);
  • systemctl reloadfunciona para cualquier servicio que lo permita (que lo tiene configurado en el archivo de la unidad). No es necesario recordar los comandos específicos del servicio. Esto es aún más interesante si tiene varias instancias de un servicio.

El uso serviceo los init.dscripts son formas heredadas / obsoletas de hacer lo mismo. Aunque podrían funcionar, ya no se admiten ni se recomiendan en un sistema basado en systemd.

Siosmo
fuente