Làm thế nào để tải lại nginx - systemctl hoặc nginx -s?


24

Có sự khác biệt giữa việc gọi

systemctl reload nginx

và gọi

nginx -s reload

?

Tôi biết rằng, ngoài systemd, còn có các hệ thống init khác như SysV và Upstart. Vì vậy, có thể câu hỏi này áp dụng cho họ quá.

Có nên phát lệnh này thông qua hệ thống init hay tôi chỉ có thể gọi nginx?

Cảm ơn trước


1
Trên thực tế nếu hệ thống của bạn hỗ trợ nó, tôi muốn sử dụng servicehoặc init.d, nhưsudo service nginx reload
Mohammad AbuShady

Câu trả lời:


23

Bạn có thể tìm hiểu những gì systemd reload nginxsẽ làm bằng cách xem ExecReload=tùy chọn trong [Service]phần trong nginx.servicetệp đơn vị (nằm ở /usr/lib/systemd/system/nginx.servicetrên hệ thống của tôi):

$ systemctl cat nginx | grep ExecReload=

Hoặc bằng cách chạy:

$ systemctl show nginx.service --property=ExecReload

Trên hệ thống của tôi, tôi nhận được:

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

Từ 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

Như vậy systemctl reload nginxnginx -s reloadsẽ, gần như , làm điều tương tự.

Sự khác biệt là:

  • systemctl reload nginx sẽ thực thi lệnh trong môi trường sạch (và không phải môi trường người dùng hiện tại);
  • systemctl reloadhoạt động cho bất kỳ dịch vụ nào cho phép nó (có cấu hình trong tệp đơn vị). Không cần phải nhớ các lệnh cụ thể của dịch vụ. Điều này thậm chí còn thú vị hơn nếu bạn có một vài trường hợp của một dịch vụ.

Sử dụng servicehoặc init.dcác tập lệnh là những cách kế thừa / không dùng nữa để làm điều tương tự. Mặc dù chúng có thể hoạt động, nhưng chúng không được hỗ trợ cũng như không được đề xuất nữa trên hệ thống dựa trên systemd.


5

Hiện tại có một sự khác biệt trên Centos 7 và RHEL 7. Sử dụng systemctl tải lại nginx sẽ KHÔNG xác nhận cấu hình của bạn.

Xem lỗi sau: https://ormszilla.redhat.com/show_orms.cgi?id=1565377

Vì vậy, tôi khuyên bạn nên sử dụng nginx -s tải lại hoặc cập nhật tệp đơn vị nginx của bạn để sử dụng lệnh tải lại sau:

ExecReload=/usr/sbin/nginx -s reload

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.