Nginx को रोकने में विफल रहता है और nginx.pid गायब है


33

मैं Nginx को रोकना चाहता हूं लेकिन यह इस तरह विफल रहता है।

$ sudo service nginx stop
Stopping nginx:                                            [FAILED]

और nginx.confकि nginx.pid की जगह को परिभाषित करता है एक लाइन है।

# /etc/nginx/nginx.conf
pid        /var/run/nginx.pid;

लेकिन nginx.pidडायरेक्टरी में नहीं है /var/run/

locate nginx.pid यह आउटपुट दिखाता है।

/var/run/nginx.pid 
/var/run/nginx.pid.oldbin

लेकिन खोज के बाद updatedbकोई मेल नहीं है। मैं nginx / 1.4.4 का उपयोग कर रहा हूं CentOS release 6.5 (Final)

नगनेक्स डेमन को रोकने के लिए मुझे क्या करना चाहिए?

2014/01/07 को संपादित करें

यह आउटपुट है ps -ef | grep nginx, ऐसा लगता है कि नगनेक्स डेमन अभी भी चल रहा है।

ironsand 17065 16933  0 15:55 pts/0    00:00:00 grep --color nginx
root     19506     1  0  2013 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
ironsand 19507 19506  0  2013 ?        00:00:25 nginx: worker process  

और sudo service nginx restartयह त्रुटि देता है। मुझे लगता nginxहै कि शुरू करने में विफल रहता है क्योंकि पुराना अभी भी जीवित है। और /var/log/nginx/error.log-2014017इस त्रुटि को भी समाहित करता है।

Stopping nginx:                                            [FAILED]
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
                                                           [FAILED]

3
यदि यह नहीं चल रहा है तो सिस्टम nginx को रोक नहीं सकता है और चूंकि कोई PID फ़ाइल नहीं है, मुझे संदेह है कि यह पहले से ही बंद है। आप के साथ ps -ef | grep nginxया जाँच कर सकते हैं sudo netstat -tlnp | grep nginx
लादादादा ६'१४

1
आपके सुझाव के लिए धन्यवाद। मैंने psकमांड का परिणाम जोड़ा ।
ironsand

जवाबों:


37

मैं इसे पहले मास्टर प्रक्रिया को मारकर नग्नेक्स को रोकने की सिफारिश करूंगा। नगनेक्स ठीक से बंद नहीं है क्योंकि इसकी वजह से इसे स्क्रिप्ट का उपयोग करके रोका नहीं जा सकता है।

ps -ef | grep nginx

यह आपको nginx मास्टर प्रक्रिया का PID दिखाएगा। जैसा आपने ऊपर बताया:

रूट 19506 1 0 2013? 00:00:00 nginx: मास्टर प्रक्रिया / usr / sbin / nginx -c /etc/nginx/nginx.conf

इसे मार डालो

किल -9 19506

एक बार फिर से सत्यापित करें कि क्या कोई nginx प्रक्रिया चल रही है या पोर्ट 80 पर कब्जा है। यदि आप देखते हैं कि कोई भी प्रक्रिया 80 पोर्ट के लिए बाध्य है, तो PID को पहचानें और जांचें कि क्या यह मारा जा सकता है।

ps -ef | grep nginx

netstat -tulpn | grep 80

सुनिश्चित करें कि फाइलसिस्टम ठीक है और आप फाइल सिस्टम को पढ़ / लिख सकते हैं। फिर शुरू करें nginx

सेवा nginx शुरू


धन्यवाद! मास्टर प्रक्रिया को मारने के बाद, मुझे नग्नेक्स कार्यकर्ता प्रक्रिया को भी मारना था। फिर मैं अंत में नग्नेक्स डेमन शुरू कर सकता हूं।
ironsand

आपने अभी-अभी संदीप नामक एक आत्मा को बचाया! डॉक्यूमेंटिंग के लिए बहुत-बहुत धन्यवाद ..
Thale

धन्यवाद @ sandeep.s85 मेरे लिए भी उपयोगी है। ब्याज से बाहर होने के कारण nginx.pid फ़ाइल के गायब होने का क्या कारण होगा जबकि nginx चल रहा है?
Codemonkey

यह सिर्फ मेरे लिए फिर से हुआ है, काश मुझे पता होता कि इसका क्या कारण है।
कोडनेम

मेरे नगनेक्स मास्टर प्रक्रिया को मारने के बाद वापस जीने के लिए आते हैं।
डब्ल्यूटीआईएफएस

11

संकट

मेरे लिए उन दो फाइलों में pid फ़ाइल का नाम अलग था:

  • /usr/lib/systemd/system/nginx.service
    • pid /var/run/nginx.pid;
  • /etc/nginx/nginx.conf
    • PIDFile=/run/nginx.pid

उन दो को मैच करने की जरूरत है।

ठीक कर:

इसलिए मैंने इसे /usr/lib/systemd/system/nginx.service में समायोजित किया और फिर किया:

systemctl daemon-reload
systemctl start nginx

फिर यह सही ढंग से ऊपर आया।


3
ऐसा कैसे? उबंटू में /var/run/एक की सिमलिंक है/run/
जेड Zlatev

हाँ, तो यह एक समाधान नहीं है। लेकिन मेरे मामले में सब कुछ /run/nginx.pid है।
खतरे '

मेरे nginx.conf में pid लॉग / nginx.pid था - जो बदलकर /run/nginx.pid हो गया और यह तय हो गया, धन्यवाद पैट्रिक!
phpguru

9

मुझे यह समस्या थी, और दौड़ने से ps -ef | grep nginxमुझे ऐसे कामगार दिखेंगे जो स्वीकृत प्रक्रिया द्वारा सुझाई गई मास्टर प्रक्रिया को मारने के बावजूद कताई करते रहेंगे:

[~]# ps -ef | grep nginx
nginx    10730     1  0 Sep14 ?        00:00:16 nginx: cache manager process            
nginx    18469     1  0 Oct09 ?        00:11:02 nginx: worker process                   
nginx    25779     1  0 Oct13 ?        00:01:31 nginx: worker process                   
nginx    26458     1  0 15:45 ?        00:00:00 nginx: worker process    

तो इसे ठीक करने का मेरा उपाय बस यही था:pkill nginx && service nginx restart


1

मेरी समस्या यह थी कि मैंने pidदो अलग-अलग फाइलों में निर्दिष्ट किया था । जब मैंने एक संदर्भ हटा दिया, तब .pidफ़ाइल को हटा दिया और फिर से शुरू कर दिया और फिर से सामान्य रूप से व्यवहार करना शुरू कर दिया।


हां यह एक, PID को /usr/lib/systemd/system/nginx-debug.service और /etc/nginx/nginx.conf में परिभाषित किया गया है
edmondscommerce.com

0

यह इंगित करता है कि नग्नेक्स तुरंत दुर्घटनाग्रस्त हो रहा है, अगर यह पहले शुरू किया गया था। क्या आपने /var/log/nginx*यह देखने के लिए सामग्री की जाँच की है कि प्रक्रिया क्या कर रही है?

EDIT: इसके अलावा, यदि आप हमें अपना OS और nginx का संस्करण बताते हैं, तो हम अधिक विस्तृत उत्तर दे सकते हैं।


0

मुझे यकीन है कि अधिक जानकारी की आवश्यकता होगी, लेकिन, मैं आपको अनुमान लगा रहा हूं कि आपके पास पहले से ही एक और वेब सर्वर चल रहा है नग्नेक्स के उदाहरण के बजाय जो आप स्वयं चाहते हैं, इसलिए आपको इसे खोजने की आवश्यकता है - त्रुटि का कहना है कि पोर्ट 80 उपयोग में है, लेकिन नहीं क्या

कोशिश करें netstat -tulpn- आप स्थानीय पते के तहत एक प्रविष्टि की तलाश कर रहे हैं जो कि समाप्त होता है: 80 - यह आपको प्रोग्राम का नाम और पीआईडी ​​भी देगा ताकि आप इसे पहचान सकें। यहाँ मेरा है - मैं lighttpd चला रहा हूँ और इसकी 3 लाइन पर दिखाया गया है।

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      4684/rtorrent
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      923/php-fpm.conf)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      972/lighttpd
tcp        0      0 0.0.0.0:6901            0.0.0.0:*               LISTEN      4684/rtorrent
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      720/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      720/sshd
udp        0      0 0.0.0.0:6881            0.0.0.0:*                           4684/rtorrent

अन्य वेब सर्वर को ठीक से बंद कर दें (जब से इसकी स्पार्टिंग ऊपर की तरफ शुरू होती है, तो एक सामान्य 'किल' काम नहीं कर सकता है) और नैग्निक्स शुरू करने का प्रयास करें। यदि ऐसा लगता है, तो आपको दूसरे वेब सर्वर को शुरू करने से रोकने के लिए या किसी अन्य पावर पर इसके कॉन्फ़िगरेशन को समायोजित करने के लिए अपनी init स्क्रिप्ट्स को संपादित करना चाहिए।


आपकी सहायता के लिए धन्यवाद। netstat -tulpnदिखाता है tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19507/nginx। इसलिए किसी तरह नगनेक्स ने उस बंदरगाह पर कब्जा कर लिया। लेकिन जैसा कि संदीप ने कहा, मैंने नगनेक्स प्रक्रिया को मार दिया, फिर यह काम करता है। तुम्हारी सहायता सराहनीय है!
ironsand

0

मेरे पास उबंटू 10.10 के साथ इसी तरह का मुद्दा था और nginx का एक संकलित संस्करण / ऑप्ट / nginx / sbin में चल रहा था।

दोनों /opt/nginx/conf/nginx.conf और /etc/nginx/nginx.conf फ़ाइलों की जाँच करें और वे मिलान सत्यापित करें।

Nginx.pid स्थान परीक्षण का उपयोग करके मिलान करने के लिए /etc/init.d/nginx स्टार्टअप फ़ाइल समायोजित करें:

sudo /etc/init.d/nginx configtest # should show no failures
sudo /etc/init.d/nginx start      # should show starting
sudo /etc/init.d/nginx status     # should show running
sudo /etc/init.d/nginx stop       # should show stopping -- (wait for a few)
sudo /etc/init.d/nginx status     # should show can not access PID file for nginx
sudo netstat -tap  # should not show nginx program running with open local address

0

नगनेक्स को रोकने के लिए मैनुअल को कैसे करना है, इसकी जांच करें man nginx

डिफ़ॉल्ट तरीका के साथ स्टॉप सिग्नल का उपयोग करना चाहिए nginx -s stop

वास्तव में इतना ही सरल होना चाहिए। आपके विकल्प हैं:

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