¿Es "nginx -s" lo mismo que "servicio nginx"?

¿Es "nginx -s" lo mismo que "servicio nginx"?

Noté que muchos de los comandos como nginx -s reloadand nginx -s stopparecen ser (¿casi?) iguales que service nginx reloady service nginx stop.

¿Son esos "prefijos" realmente intercambiables? ¿Uno de ellos invoca de alguna manera al otro?

Respuesta1

Dado que está ejecutando Ubuntu 18.04 (es decir, una distribución reciente de Linux), podría sugerirle una tercera"alias"comando: systemctl reload nginxy /etc/init.d/nginx reload.

La historia completa es esta: cada servidor/aplicación tiene su propia manera de iniciar, detener, recargar, etc. Esto puede ser tan simple como llamar nginxo complicado como configurar varias variables de entorno y llamar java <a_lot_of_options> org.apache.catalina.startup.Bootstrap starta Tomcat.

Para proporcionar una forma uniforme y automática de iniciar aplicaciones, las distribuciones proporcionan scripts de inicio (o similares), que en un nuevo Ubuntu vienen en tres variantes:

  1. El modernosistemad: systemctl <verb> nginx,
  2. El legado (para Ubuntu)advenedizo: service nginx <verb>,
  3. El más antiguoinicio SysV: /etc/init.d/nginx <verb>.

En Ubuntusistemades el que realmente se está ejecutando, mientras que los otros llamansistemad. La configuración ( /lib/systemd/system/nginx.servicearchivo) para nginx contiene:

ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid

Entonces:

  • systemctl reload nginxllamadas nginx -s reload, pero con la opción adicional -g 'daemon on; master_process on;', que anula estas dos opciones de configuración,
  • systemctl stop nginxutiliza un programa auxiliar start-stop-daemonpara supervisarnginxcerrar. Este programa enviará una SIGQUITseñal a nginx, que es la misma que nginx -s quit, espere 5 segundos y si nginx aún se está ejecutando anunciará el error.

En general, es mejor utilizar los systemctl <verb> <service>comandos en lugar de iniciar las aplicaciones por sí solos.

Editar: De hechosistemadhace mucho más que ejecutar el comando: conecta su entrada/salida adiario-systemd, limita los recursos a su disposición (grupos c) y la visibilidad de otras partes del sistema (espacios de nombres), configura el procesocapacidadesy probablemente algo más.

información relacionada