सवाल ओएस एक्स पर nginx को पुनरारंभ कैसे करें


मैं उपयोग कर रहा हूँ nginx ओएस एक्स 10.8 पर। ताजा स्थापित nginx लेकिन छोड़कर nginx को पुनरारंभ करने का कोई तरीका नहीं मिल रहा है kill nginx_pid कहना kill 64116। आश्चर्य है कि पुनरारंभ करने के बेहतर तरीके हैं या नहीं nginx

Google और SO पर कुछ विधियां मिलीं लेकिन काम नहीं किया:

nginx -s restart

sudo fuser -k 80/tcp ; sudo /etc/init.d/nginx restart

के लिए त्रुटि संदेश nginx -s restart है

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

कभी-कभी यह त्रुटि भी मिलती है msg:

nginx: invalid option: "-s restart"

44
2018-01-05 21:15


मूल




जवाब:


आपका nginx pid फ़ाइल स्थान क्या है? यह कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट है, कॉन्फ़िगर स्क्रिप्ट में डिफ़ॉल्ट पथ निर्दिष्ट संकलन-समय। आप इसके लिए खोज सकते हैं:

find / -name nginx.pid 2>/dev/null (nginx चल रहा है, जबकि जारी होना चाहिए)

उपाय:

sudo mkdir -p /usr/local/var/run/
ln -s /current/path/to/pid/file /usr/local/var/run/nginx.pid

15
2018-01-05 23:11



ऊपर चलाकर find आदेश मैंने पाया /usr/local/var/run/nginx.pid अस्तित्व में है। त्रुटि संदेश अब है nginx: invalid option: "-s restart" - clwen
ऐसा इसलिए है क्योंकि यह एक वैध संकेत नहीं है। चेक man पेज (जो आपको हमेशा करना चाहिए, वैसे भी): Send signal to a master process: stop, quit, reopen, reload. - Mahmoud Al-Qudsi
यह पुनरारंभ अनुकरण करने का एक बेहतर तरीका है nginx -s stop; nginx - clwen
या nginx -s reload अगर आपको बस कॉन्फ़िगरेशन अपडेट करने की आवश्यकता है - Andrei
यदि आप कहां खोज रहे हैं nginx है, दस्तावेज़ों के अनुसार यह तीन स्थानों में से एक पर है, डिफ़ॉल्ट रूप से, कॉन्फ़िगरेशन फ़ाइल को nginx.conf नाम दिया जाता है और निर्देशिका में रखा जाता है /usr/local/nginx/conf, /etc/nginx, या /usr/local/etc/nginx। मैंने मेरा पाया /etc/nginx - Craicerjack


दौड़ने का प्रयास करें sudo nginx nginx शुरू करने से पहले।


82
2018-01-30 10:45



यह सही जवाब है - Jim
इसने मेरे लिए काम नहीं किया। ओपी के रूप में वही त्रुटि। - whirlwin
nginx: [उभरना] बांधें () से 0.0.0.0:8080 असफल (48: पता पहले से उपयोग में है) nginx: [उभर] बाइंड () से 0.0.0.0:8080 विफल (48: पता पहले से उपयोग में है) nginx: [उभरना ] बाइंड () से 0.0.0.0:8080 असफल (48: पता पहले से उपयोग में है) nginx: [उभरता] बांध () से 0.0.0.0:8080 विफल (48: पता पहले से उपयोग में है) nginx: [उभरता] बांधें () 0.0.0.0:8080 विफल (48: पता पहले से उपयोग में है) nginx: [उभरता] अभी भी बाध्य नहीं कर सका () - Harsha M V
@pinouchon मैं उपरोक्त मिलता है। मैं रुकना और पुनरारंभ करना चाहता हूं - Harsha M V


कॉन्फ़िगरेशन फ़ाइलों को पुनः लोड करने के लिए:

sudo nginx -s reload

पूरी तरह से पुनरारंभ करने के लिए nginx:

sudo nginx -s quit
sudo nginx

विवरण

कोई नहीं है restart nginx के लिए संकेत। दस्तावेज़ों से, यहां संकेत हैं कि मास्टर प्रक्रिया स्वीकार करती है:

SIGINT, SIGTERM  Shut down quickly.
SIGHUP           Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.
SIGQUIT          Shut down gracefully.
SIGUSR1          Reopen log files.
SIGUSR2          Upgrade the nginx executable on the fly.
SIGWINCH         Shut down worker processes gracefully.

संभवतः आप इन संकेतों को मैन्युअल रूप से प्रक्रिया आईडी पर भेज सकते हैं, लेकिन nginx आदेश में ध्वज है nginx -s <signal> जो आपके लिए मास्टर प्रक्रिया में सिग्नल भेजता है। आपके विकल्प हैं:

stop    SIGTERM
quit    SIGQUIT
reopen  SIGUSR1
reload  SIGHUP

मैन्युअल रूप से पिड के साथ futz करने की जरूरत नहीं है।


संपादित करें: सिर्फ यह महसूस किया कि इस जानकारी में से अधिकांश जानकारी पहले से ही अन्य उत्तरों पर टिप्पणियों में थी। स्थिति को सारांशित करने के लिए वैसे भी इसे छोड़कर।


15
2018-06-25 21:02



मुझे यह सूडो nginx -s पुनः लोड nginx मिलता है: [त्रुटि] खुला () "/usr/local/var/run/nginx.pid" असफल रहा (2: ऐसी कोई फ़ाइल या निर्देशिका नहीं) - Harsha M V
nginx -s quit अच्छा काम किए - Oleg Berman


मैं इसे इस तरह करता हूं:

सबसे पहले प्रगति को मार डालो

ps aux | grep nginx
kill -9 {pid}

फिर nginx शुरू करें

nginx

यह काम करता हैं!


4
2017-10-28 08:33



यह विधि मेरे लिए काम नहीं करती है! मैं जानना चाहता हूं कि 9 का अर्थ क्या है? - GeekHades


भविष्य के संसाधन के रूप में, आप परामर्श कर सकते हैं http://wiki.nginx.org/CommandLine

Nginx शायद रूट के रूप में चलता है, इसलिए आपको इसे प्रभावित करने के लिए निम्न आदेश का एक संस्करण चलाने की आवश्यकता होगी।

sudo nginx -s stop | reload | quit | reopen

आमतौर पर पुनरारंभ करने के लिए बहुत अधिक कारण नहीं है Nginx पसंद Apache आवश्य़कता होगी। यदि आपने कॉन्फ़िगरेशन फ़ाइल संशोधित की है, तो आप बस रीलोड विकल्प चाहते हैं।


1
2017-08-14 15:18



nginx: [त्रुटि] "/usr/local/var/run/nginx.pid" में अवैध पीआईडी ​​संख्या "" ... - octohedron


जांचें कि यह निर्देशिका मौजूद है या नहीं:

/usr/local/var/run

यह त्रुटि तब हो सकती है जब nginx pid फ़ाइल को प्रारंभ करने का प्रयास करता है स्थानीयकरण जो मौजूद नहीं है।


1
2018-02-01 14:07





यहां एक बग है। Nginx को संशोधित / पुनरारंभ करते समय nginx चल रहा है या nginx कॉन्फ़िगरेशन को संशोधित करते समय इस फ़ाइल के लिए यह संभव है कि यह फ़ाइल (जो अनिवार्य रूप से केवल एक प्रक्रिया आईडी सूचक है) नष्ट हो।

जब आप nginx को कोई संकेत भेजना चाहते हैं

nginx -s quit;
nginx -s stop;
nginx -s reload;

nginx इस फ़ाइल का उपयोग उस प्रक्रिया की आईडी को संदर्भित करने के लिए करता है जिस पर उसे सिग्नल भेजने की आवश्यकता होती है। अगर फ़ाइल नहीं है तो nginx और cli ऐप की सक्रिय चल रही प्रक्रिया के बीच का लिंक प्रभावी रूप से टूटा हुआ है।

मैं वास्तव में एक ऐसे राज्य में समाप्त हुआ जहां दो nginx प्रक्रियाएं एक साथ चल रही थी इसलिए दोनों को मार डाला।

इसके आसपास काम करने के लिए, आप या तो गतिविधि मॉनीटर के माध्यम से मौजूदा nginx प्रक्रियाओं को समाप्त करने के लिए मजबूर कर सकते हैं (फिर nginx चलाएं और क्ली ऐप एक नई nginx.pid फ़ाइल बनाएं) या यदि आपको वास्तव में nginx चलाना जारी रखना है, लेकिन nginx को चलाने की आवश्यकता है - s reload - nginx.pid नामक / रन पथ में मैन्युअल रूप से एक फ़ाइल बनाएं और वर्तमान में चल रहे nginx प्रक्रियाओं (गतिविधि मॉनीटर के माध्यम से प्राप्त) के पीआईडी ​​डालें।


1
2018-02-27 15:47



कमांड लाइन के माध्यम से उन प्रक्रियाओं को मारने के तरीके पर कोड दिखाने में मददगार होगा। - YPCrumble


कस्टम कॉन्फ़िगरेशन फ़ाइल उपयोग को पुनः लोड करने के लिए

nginx -s reload -c /etc/nginx/conf.d/<config file>.conf

1
2018-03-19 17:39





इसका मतलब यह हो सकता है कि nginx पहले ही बंद हो चुका है - इस समय नहीं चल रहा है।
सबसे पहले, पुष्टि करें कि nginx चल रहा है या नहीं, निष्पादित करें:

$ ps aux | grep nginx

1
2017-10-19 02:04