nginx-systemctl 또는 nginx -s를 다시로드하는 방법?


24

부름에 차이가 있습니까

systemctl reload nginx

전화

nginx -s reload

?

systemd 외에도 SysV 및 Upstart와 같은 다른 초기화 시스템이 있다는 것을 알고 있습니다. 따라서이 질문은 그들에게도 적용될 수 있습니다.

init 시스템을 통해이 명령을 실행하는 것이 좋습니까, 아니면 그냥 nginx 자체를 호출 할 수 있습니까?

미리 감사드립니다


1
시스템이 지원하는 경우 사실, 내가 사용하는 것을 선호 serviceinit.d처럼sudo service nginx reload
모하마드 AbuShady

답변:


23

장치 파일 의 섹션 ( 내 시스템에 있음) systemd reload nginxExecReload=옵션 을 보면 수행 할 작업을 찾을 수 있습니다 .[Service]nginx.service/usr/lib/systemd/system/nginx.service

$ systemctl cat nginx | grep ExecReload=

또는 다음을 실행하여

$ systemctl show nginx.service --property=ExecReload

내 시스템에서 다음을 얻습니다.

ExecReload=/usr/bin/kill -HUP $MAINPID

보낸 사람 nginx(8):

-s signal      Send a signal to the master process. The argument signal
               can be one of: stop, quit, reopen, reload. The following
               table shows the corresponding system signals:

               stop    SIGTERM
               quit    SIGQUIT
               reopen  SIGUSR1
               reload  SIGHUP

따라서 systemctl reload nginx하고 nginx -s reload, 것입니다 거의 같은 일을한다.

차이점은 다음과 같습니다.

  • systemctl reload nginx 깨끗한 환경 (현재 사용자 환경이 아닌)에서 명령을 실행합니다.
  • systemctl reload이를 허용하는 모든 서비스 (장치 파일에 구성되어 있음)에 대해 작동합니다. 서비스 별 명령을 기억할 필요가 없습니다. 서비스 인스턴스가 여러 개인 경우 더욱 흥미 롭습니다.

사용 service또는 init.d스크립트는 레거시 / 더 이상 사용되지 않는 동일한 방법으로 수행됩니다. 작동 할 수도 있지만 시스템 기반 시스템에서는 더 이상 지원되거나 권장되지 않습니다.


5

현재 Centos 7과 RHEL 7에는 차이가 있습니다. systemctl reload nginx를 사용하면 구성을 검증하지 않습니다.

다음 버그를 참조하십시오 : https://bugzilla.redhat.com/show_bug.cgi?id=1565377

따라서 nginx -s reload를 사용하거나 nginx 단위 파일을 업데이트하여 다음 reload 명령을 사용하는 것이 좋습니다.

ExecReload=/usr/sbin/nginx -s reload

https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.