nginx को पुनः लोड कैसे करें - systemctl या nginx -s?


24

क्या कॉलिंग में अंतर है

systemctl reload nginx

और बुला रहा है

nginx -s reload

?

मुझे पता है कि, systemd के अलावा, अन्य init सिस्टम हैं जैसे SysV और Upstart। तो शायद यह सवाल उन पर भी लागू होता है।

क्या इस आदेश को init सिस्टम के माध्यम से जारी करना बेहतर है या मैं सिर्फ nginx को ही कॉल कर सकता हूं?

अग्रिम में धन्यवाद


1
वास्तव में यदि आपका सिस्टम इसका समर्थन करता है, तो मैं इसका उपयोग करना पसंद करूंगा serviceया init.d, जैसेsudo service nginx reload
मोहम्मद अबूशाही

जवाबों:


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स्क्रिप्ट का उपयोग एक ही काम करने की विरासत / पदावनत तरीके हैं। हालांकि वे काम कर सकते हैं, वे सिस्टम आधारित प्रणाली पर अब समर्थित नहीं हैं और न ही अनुशंसित हैं।


5

वर्तमान में Centos 7 और RHEL 7 में अंतर है। Systemctl reload nginx का उपयोग करने से आपका कॉन्फ़िगरेशन मान्य नहीं होगा।

निम्नलिखित बग देखें: https://bugzilla.redhat.com/show_bug.cgi?id=1565377

तो मैं निम्नलिखित पुन: लोड आदेश का उपयोग करने के लिए nginx -s पुनः लोड करने या अपनी nginx इकाई फ़ाइल को अपडेट करने की सलाह दूंगा:

ExecReload=/usr/sbin/nginx -s reload

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.