मैं कैसे देख सकता हूं कि नग्नेक्स को किस झंडे के साथ संकलित किया गया था?


227

मैं कैसे जांच कर सकता हूं कि एक नगीनेक्स इंस्टॉलेशन में क्या मॉड्यूल जोड़े गए हैं?


7
यह कहने का एक और तरीका है "मैं कैसे देख सकता हूं कि नग्नेक्स किन झंडों के साथ संकलित किया गया था?" बस यह जोड़ना चाहता था कि सुदंरता बढ़ाने के लिए।
नाथन लॉन्ग

जवाबों:


291

nginx -Vसभी कॉन्फ़िगर किए गए मॉड्यूल को सूचीबद्ध करेगा। कोई स्पष्ट सक्षम / लोड कमांड नहीं है।


8
sudo nginx -V
नोब्स के

4
मुझे sudoUbuntu 14.04 पर उपयोग करने की आवश्यकता नहीं थी
Asfand Qazi

5
कृपया ध्यान दें कि यह पैरामीटर केस संवेदी है। यदि आप लोअर केस "-v" का उपयोग करते हैं तो आपको केवल वर्जन नंबर मिलेगा। ऊपरी स्थिति "-V" आपको नगणक्स बाइनरी को संकलित करने के लिए उपयोग किए जाने वाले सभी मॉड्यूल की सूची सहित पूर्ण कॉन्फ़िगरेशन देता है।
इलिडन

1
ऐसा लगता है कि कुछ सिस्टम में $PATHगैर-सुपरसर्स के लिए सेट ठीक से नहीं हो सकता है , सभी sbinनिर्देशिकाओं को छोड़ देता है , इसलिए, आपको डेमॉन का पूर्ण पथ (जैसे, /usr/sbin/nginx -V) निर्दिष्ट करना पड़ सकता है , या वास्तव में बस उपयोग कर सकते हैं sudo
cnst

@its_me ... आपको शायद सूडो को चलाने की जरूरत नहीं हैnginx -V
कार्सन

64

मुश्किल-सक्षम एक-लाइनर:

2>&1 nginx -V | tr -- - '\n' | grep _module

दो वातावरणों की तुलना करने के लिए सुविधाजनक:

lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

संपादित करें:

धन्यवाद, रोमन न्यूजा, सही ढंग से इंगित करने के लिए कि इसमें --withoutमॉड्यूल संकलन झंडे शामिल हैं। मैं --withoutझंडे का उपयोग नहीं कर रहा हूं और बस मॉड्यूल सूची प्राप्त करने पर ध्यान केंद्रित कर रहा था, इसलिए मैंने उसे नहीं पकड़ा; एक-लाइनर को 2 प्रतिष्ठानों के बीच झंडे को संकलित करने में मदद करने के लिए संशोधित किया जा सकता है, जैसे:

2>&1 nginx -V | tr ' '  '\n'

जो समान है:

2>&1 nginx -V | xargs -n1

शायद sortसंकलित झंडे के idiosyncratic क्रम को सामान्य करने और trफिर से अलग-अलग लाइनों पर असाइनमेंट को विभाजित करने के लिए पाइप भी । अंतिम परिणाम:

lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

यह काम करता है अगर sortदोनों दूरस्थ मेजबान (यानी वे दोनों GNU या BSD) पर समान व्यवहार करते हैं। यदि आप लिनक्स की तुलना बीएसडी (मैक ओएस एक्स) से कर रहे हैं, तो बस उस | sort | tr = '\n'टुकड़े lsmodnको स्थानीय शेल से बाहर ले जाएँ, जहाँ sortलगातार होगा:

lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn  | sort | tr = '\n')

मेसियर, लेकिन यह काम करता है।


2
2>&1 nginx -V | tr -- - '\n' | grep _moduleकमांड पूरी तरह से गलत है क्योंकि यह बिना इनस्टॉल्ड किए * इंस्टॉल किए गए विकल्पों की तरह है!
रोमन नवाजा 28:13

जबरदस्त जवाब। ब्याज से बाहर आप 2> और 1 को सामने क्यों रखते हैं। मैंने जो देखा है वह अधिक असामान्य है।
घुड़सवार

@MattTagg का उपयोग होने तक यह केवल सामने है। फिर यह या तो कमांड के अंत में है।
किमी।

3
  • nginx -Vआदेश (अपर-केस वी) सभी मॉड्यूल, साथ ही अन्य संकलन समय विकल्प सूची जाएगा:

    %nginx -V nginx version: nginx/1.2.2 built by gcc 4.2.1 20070719 TLS SNI support enabled configure arguments: --prefix=/var/www --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=logs/access.log --error-log-path=logs/error.log --http-client-body-temp-path=/var/www/cache/client_body_temp --http-proxy-temp-path=/var/www/cache/proxy_temp --http-fastcgi-temp-path=/var/www/cache/fastcgi_temp --http-scgi-temp-path=/var/www/cache/scgi_temp --http-uwsgi-temp-path=/var/www/cache/uwsgi_temp --user=www --group=www --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module %

    ध्यान दें कि sudoइस कमांड के लिए कभी कोई आवश्यकता नहीं है , क्योंकि सुपरसुअर शक्तियों को केवल पोर्ट खोलने के लिए nginx द्वारा IPPORT_RESERVED(जैसे, 1024 से नीचे पोर्ट) और / या लिखने के लिए कुछ लॉग-फाइल की आवश्यकता होगी।

    हालाँकि, आपकी $PATHसेटिंग्स के आधार पर , आपको या तो पूर्ण पथ निर्दिष्ट करने की आवश्यकता हो सकती है - जैसे /usr/sbin/nginx -V, या वास्तव sudoमें उपयुक्त /sbin/निर्देशिका को शामिल करने के लिए उपयोग करना चाहिए $PATH

  • नए nginx रिलीज के साथ शुरू - nginx 1.9.11फरवरी 2016 के बाद से - गतिशील रूप से लोड करने योग्य मॉड्यूल अब भी समर्थित हैं , http://nginx.org/r/load_module - load_moduleनिर्देश की मदद से ।


1

nginx -V सभी मॉड्यूल नहीं दिखाता है, यह मेरे लिए लगभग 20 मॉड्यूल दिखाता है।

मैं strings /usr/sbin/nginx|grep _module|grep -v configure| sortअपने nginx में सभी 200+ मॉड्यूल को सूचीबद्ध करता हूं।

मैंने भी कोशिश की objdumpलेकिन ऐसा लग रहा है कि मेरे इंस्टॉलेशन में नगीनिक्स ने बाइनरी छीन ली है।

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