जवाबों:
nginx -V
सभी कॉन्फ़िगर किए गए मॉड्यूल को सूचीबद्ध करेगा। कोई स्पष्ट सक्षम / लोड कमांड नहीं है।
sudo nginx -V
sudo
Ubuntu 14.04 पर उपयोग करने की आवश्यकता नहीं थी
$PATH
गैर-सुपरसर्स के लिए सेट ठीक से नहीं हो सकता है , सभी sbin
निर्देशिकाओं को छोड़ देता है , इसलिए, आपको डेमॉन का पूर्ण पथ (जैसे, /usr/sbin/nginx -V
) निर्दिष्ट करना पड़ सकता है , या वास्तव में बस उपयोग कर सकते हैं sudo
।
nginx -V
मुश्किल-सक्षम एक-लाइनर:
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>&1 nginx -V | tr -- - '\n' | grep _module
कमांड पूरी तरह से गलत है क्योंकि यह बिना इनस्टॉल्ड किए * इंस्टॉल किए गए विकल्पों की तरह है!
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
निर्देश की मदद से ।
nginx -V
सभी मॉड्यूल नहीं दिखाता है, यह मेरे लिए लगभग 20 मॉड्यूल दिखाता है।
मैं strings /usr/sbin/nginx|grep _module|grep -v configure| sort
अपने nginx में सभी 200+ मॉड्यूल को सूचीबद्ध करता हूं।
मैंने भी कोशिश की objdump
लेकिन ऐसा लग रहा है कि मेरे इंस्टॉलेशन में नगीनिक्स ने बाइनरी छीन ली है।