나는 and 와 같은 많은 명령이 nginx -s reload
and nginx -s stop
와 (거의?) 동일한 것으로 나타났습니다 .service nginx reload
service 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 start
Tomcat을 호출하는 것처럼 복잡할 수도 있습니다.
애플리케이션을 시작하는 균일하고 자동적인 방법을 제공하기 위해 배포판에서는 init 스크립트(또는 이와 유사한)를 제공하며, 새로운 Ubuntu에서는 세 가지 변형이 제공됩니다.
- 현대체계화된:
systemctl <verb> nginx
, - 레거시(우분투용)갑자기 나타나다:
service nginx <verb>
, - 가장 오래된SysV 초기화:
/etc/init.d/nginx <verb>
.
우분투에서체계화된실제 실행 중이고 다른 사람이 호출하는 동안체계화된. /lib/systemd/system/nginx.service
nginx의 구성( 파일)에는 다음이 포함됩니다.
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 nginx
start-stop-daemon
감독하기 위해 도우미 프로그램을 사용합니다.nginx일시 휴업. 이 프로그램은SIGQUIT
nginx와 동일한 신호를 보내고nginx -s quit
5초 동안 기다린 후 nginx가 여전히 실행 중이면 실패를 알립니다.
systemctl <verb> <service>
일반적으로 응용 프로그램 자체를 시작하는 것보다 명령을 사용하는 것이 더 좋습니다 .
편집하다: 실제로체계화된명령을 실행하는 것보다 훨씬 더 많은 일을 합니다. 즉, 입력/출력을 다음과 같이 연결합니다.systemd-저널, 처리할 수 있는 리소스가 제한됩니다(cgroup) 및 시스템의 다른 부분의 가시성(네임스페이스), 프로세스를 구성합니다.능력그리고 아마도 그 이상일 것입니다.