`nginx -s` é o mesmo que `service nginx`?

`nginx -s` é o mesmo que `service nginx`?

Percebi que muitos dos comandos like nginx -s reloade nginx -s stopparecem ser (quase?) iguais a service nginx reloadand service nginx stop.

Esses "prefixos" são realmente intercambiáveis? Um deles de alguma forma invoca o outro?

Responder1

Como você está executando o Ubuntu 18.04 (ou seja, uma distribuição Linux recente), posso sugerir uma terceira“alias”comando: systemctl reload nginxe /etc/init.d/nginx reload.

A história toda é esta: cada servidor/aplicativo tem sua própria maneira de iniciar, parar, recarregar, etc. Isso pode ser tão simples quanto chamar nginxou complicado como definir diversas variáveis ​​de ambiente e chamar java <a_lot_of_options> org.apache.catalina.startup.Bootstrap starto Tomcat.

Para fornecer uma maneira uniforme e automática de iniciar aplicativos, as distribuições fornecem scripts de inicialização (ou similares), que em um novo Ubuntu vêm em três variantes:

  1. O modernosistema: systemctl <verb> nginx,
  2. O legado (para Ubuntu)subir na vida: service nginx <verb>,
  3. O mais velhoInicialização SysV: /etc/init.d/nginx <verb>.

No Ubuntusistemaé o que está em execução, enquanto os outros chamamsistema. A configuração ( /lib/systemd/system/nginx.servicearquivo) do nginx contém:

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

Então:

  • systemctl reload nginxchamadas nginx -s reload, mas com a opção adicional -g 'daemon on; master_process on;', que substitui essas duas opções de configuração,
  • systemctl stop nginxusa um programa auxiliar start-stop-daemonpara supervisionarnginxdesligar. Este programa enviará um SIGQUITsinal para o nginx, que é o mesmo que nginx -s quit, espere 5 segundos e se o nginx ainda estiver em execução, anunciará a falha.

Em geral é melhor usar os systemctl <verb> <service>comandos em vez de iniciar os aplicativos sozinhos.

Editar: Na verdadesistemafaz muito mais do que executar o comando: ele conecta sua entrada/saída asystemd-journal, limita os recursos à sua disposição (grupos) e a visibilidade de outras partes do sistema (espaços para nome), ele configura o processocapacidadese provavelmente algo mais.

informação relacionada