`nginx -s`는 `service nginx`와 동일합니까?

`nginx -s`는 `service nginx`와 동일합니까?

나는 and 와 같은 많은 명령이 nginx -s reloadand nginx -s stop와 (거의?) 동일한 것으로 나타났습니다 .service nginx reloadservice nginx stop

이러한 "접두사"는 실제로 상호 교환이 가능합니까? 그 중 하나가 어떻게든 다른 하나를 호출합니까?

답변1

귀하는 Ubuntu 18.04(최신 Linux 배포판)를 실행하고 있으므로 세 번째 버전을 제안할 수 있습니다."별명"명령: systemctl reload nginx그리고 /etc/init.d/nginx reload.

전체 이야기는 다음과 같습니다. 모든 서버/응용 프로그램에는 시작, 중지, 다시 로드 등을 수행하는 고유한 방법이 있습니다. 이는 호출만큼 간단할 수도 nginx있고 여러 환경 변수를 설정하고 java <a_lot_of_options> org.apache.catalina.startup.Bootstrap startTomcat을 호출하는 것처럼 복잡할 수도 있습니다.

애플리케이션을 시작하는 균일하고 자동적인 방법을 제공하기 위해 배포판에서는 init 스크립트(또는 이와 유사한)를 제공하며, 새로운 Ubuntu에서는 세 가지 변형이 제공됩니다.

  1. 현대체계화된: systemctl <verb> nginx,
  2. 레거시(우분투용)갑자기 나타나다: service nginx <verb>,
  3. 가장 오래된SysV 초기화: /etc/init.d/nginx <verb>.

우분투에서체계화된실제 실행 중이고 다른 사람이 호출하는 동안체계화된. /lib/systemd/system/nginx.servicenginx의 구성( 파일)에는 다음이 포함됩니다.

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

그래서:

  • systemctl reload nginx호출 하지만 이 두 가지 구성 옵션을 재정의하는 nginx -s reload추가 옵션을 사용하면-g 'daemon on; master_process on;'
  • systemctl stop nginxstart-stop-daemon감독하기 위해 도우미 프로그램을 사용합니다.nginx일시 휴업. 이 프로그램은 SIGQUITnginx와 동일한 신호를 보내고 nginx -s quit5초 동안 기다린 후 nginx가 여전히 실행 중이면 실패를 알립니다.

systemctl <verb> <service>일반적으로 응용 프로그램 자체를 시작하는 것보다 명령을 사용하는 것이 더 좋습니다 .

편집하다: 실제로체계화된명령을 실행하는 것보다 훨씬 더 많은 일을 합니다. 즉, 입력/출력을 다음과 같이 연결합니다.systemd-저널, 처리할 수 있는 리소스가 제한됩니다(cgroup) 및 시스템의 다른 부분의 가시성(네임스페이스), 프로세스를 구성합니다.능력그리고 아마도 그 이상일 것입니다.

관련 정보