Noté que muchos de los comandos como nginx -s reload
and nginx -s stop
parecen ser (¿casi?) iguales que service nginx reload
y 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 nginx
y /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 nginx
o complicado como configurar varias variables de entorno y llamar java <a_lot_of_options> org.apache.catalina.startup.Bootstrap start
a 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:
- El modernosistemad:
systemctl <verb> nginx
, - El legado (para Ubuntu)advenedizo:
service nginx <verb>
, - 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.service
archivo) 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 nginx
llamadasnginx -s reload
, pero con la opción adicional-g 'daemon on; master_process on;'
, que anula estas dos opciones de configuración,systemctl stop nginx
utiliza un programa auxiliarstart-stop-daemon
para supervisarnginxcerrar. Este programa enviará unaSIGQUIT
señal a nginx, que es la misma quenginx -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.