วิธีการโหลด nginx - systemctl หรือ nginx -s?


24

มีความแตกต่างระหว่างการโทร

systemctl reload nginx

และการโทร

nginx -s reload

?

ฉันรู้ว่านอกเหนือจาก systemd แล้วยังมีระบบเริ่มต้นอื่น ๆ เช่น SysV และ Upstart ดังนั้นคำถามนี้อาจใช้กับพวกเขาด้วย

มันจะดีกว่าที่จะออกคำสั่งนี้ผ่านระบบ init หรือฉันจะเรียก nginx เองได้หรือไม่

ขอบคุณล่วงหน้า


1
จริง ๆ แล้วถ้าระบบของคุณรองรับฉันอยากจะใช้serviceหรือinit.dชอบsudo service nginx reload
Mohammad AbuShady

คำตอบ:


23

คุณสามารถค้นหาสิ่งที่systemd reload nginxจะทำโดยดูที่ExecReload=ตัวเลือกใน[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สคริปต์เป็นวิธีดั้งเดิม / เลิกใช้ในการทำสิ่งเดียวกัน แม้ว่ามันอาจจะทำงานได้ แต่ก็ไม่ได้รับการสนับสนุนและไม่แนะนำอีกต่อไปบนระบบที่ใช้ systemd


5

ขณะนี้มีความแตกต่างใน Centos 7 และ RHEL 7 การใช้ systemctl reload nginx จะไม่ตรวจสอบการกำหนดค่าของคุณ

ดูข้อผิดพลาดต่อไปนี้: https://bugzilla.redhat.com/show_bug.cgi?id=1565377

ดังนั้นฉันขอแนะนำให้ใช้ nginx -s reload หรือปรับปรุงไฟล์ nginx unit ของคุณเพื่อใช้คำสั่ง 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.