सर्वर पहले से ही रेल में चल रहा है


137

जब मैं rails sआदेश का उपयोग करके रेल सर्वर शुरू कर रहा हूं तो यह दिखाई दे रहा हैA server is already running. Check C:/Sites/folder/Pids/Server.pids

जब मैं फ़ाइल खोलता हूँ तो यह 4 अंकों की संख्या को आउटपुट करता है तो मैं इस मुद्दे को कैसे हल कर सकता हूं?

FYI करें

  1. रेल्स cmd का कोई अन्य उदाहरण इस समय नहीं चल रहा है।
  2. कार्य प्रबंधक की जाँच की गई लेकिन केवल cmd.exeयह दिखा रहा है कि कोई अन्य प्रक्रिया नहीं चल रही है। (विंडोज़ का उपयोग करके)।

1
मैं server.pid को \ tmp \ pids से हटाता हूं
user6746262

जवाबों:


195

फ़ाइल निकालें: C: /Sites/folder/Pids/Server.pids

स्पष्टीकरण UNIX भूमि में कम से कम हम आमतौर पर server.pid जैसी फ़ाइल में प्रक्रिया आईडी (pid) को ट्रैक करते हैं। मुझे लगता है कि यहां भी यही काम हो रहा है। वह फ़ाइल शायद किसी दुर्घटना से बची हुई थी।


5
वास्तव में यह फ़ाइल क्या करती है और इसके लिए क्या कारण है .. क्या आप इसे थोड़ा और
समझाएंगे

11
क्षमा करें, मुझे आगे टिप्पणी करनी चाहिए थी। UNIX भूमि में कम से कम हम आमतौर पर server.pid जैसी फ़ाइल में प्रोसेस आईडी (pid) को ट्रैक करते हैं। मुझे लगता है कि यहां भी यही काम हो रहा है। वह फ़ाइल शायद किसी दुर्घटना से बची हुई थी।
रेनकिनज

मुझे लगता है कि मैं इसे Git से क्लोन करता हूं तो क्या आपको लगता है कि यह एक कारण हो सकता है? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
ऐसा करने के बाद मुझे अभी भी 3000 के लिए "पोर्ट इन यूज़" मिल रहा है। कोई भी जानता है कि मैं इसे कैसे ठीक कर सकता हूं? धन्यवाद!
daveomcd

5
netstat -a -oएक प्रॉम्प्ट पर रन करें यह देखने के लिए कि पोर्ट 3000
Rory

172

TL; DR बस इसे मारने के लिए इस कमांड को चलाएँ

sudo kill -9 $(lsof -i :3000 -t)

मूल कारण: क्योंकि पीआईडी ​​एक फ़ाइल में बंद है और वेब सर्वर को लगता है कि यदि वह फ़ाइल मौजूद है तो इसका मतलब है कि वह पहले से ही चल रही है। आम तौर पर जब कोई वेब सर्वर बंद होता है तो वह फ़ाइल हटा दी जाती है, लेकिन कुछ मामलों में, उचित विलोपन नहीं होता है इसलिए आपको मैन्युअल रूप से फ़ाइल सॉल्यूशंस फ़ाइल को निकालना होगा

जब तुम दौड़ते हो रेल

=> WEBrick को बूट करना

=> विकास में शुरू होने वाले 4.0.4 एप्लिकेशन को शुरू करता है http://0.0.0.0:3000

=> भागो rails server -h अधिक स्टार्टअप विकल्पों के लिए

=> Ctrl-C सर्वर को शटडाउन करने के लिए

एक सर्वर पहले से चल रहा है। /Your_project_path/tmp/pids/server.pid चेक करें। बाहर निकल रहा है

इसलिए अपना रास्ता यहाँ दिखाए गए /your_project_path/tmp/pids/server.pid पर रखें

और इस server.pid फ़ाइल को हटा दें :

rm /your_project_path/tmp/pids/server.pid

या आपके द्वारा सर्वर से अलग किया गया था तो नीचे दिए गए दिशानिर्देशों का पालन करें:

यदि आपने कमांड "रेल्स -d" का उपयोग करके सर्वर को अलग कर लिया है, तो

आदेश का उपयोग करके अलग किए गए सर्वर को हटाएं

ps -aef | grep rails

या इस आज्ञा से

sudo lsof -wni tcp:3000

फिर

kill -9 pID

या इस कमांड का उपयोग करें

पोर्ट नाम से प्रक्रिया को खोजने और मारने के लिए जिस पर वह प्रोग्राम चल रहा है। 3000 के बदले पोर्ट जिस पर आपका प्रोग्राम चल रहा है।

sudo kill -9 $(lsof -i :3000 -t)

पुराना समाधान:

rails s -p 4000 -P tmp/pids/server2.pid

इसके अलावा, आप इस पोस्ट को और अधिक विकल्पों के लिए पा सकते हैं रेल अपडेट्स को कई सर्वरों को चलाने के लिए 3.2.11 ब्रेक


क्योंकि PID फ़ाइल में बंद है और वेब सर्वर को लगता है कि यदि वह फ़ाइल मौजूद है तो इसका मतलब है कि वह पहले से चल रहा है। आम तौर पर जब वेब सर्वर बंद हो जाता है तो वह फ़ाइल हटा दी जाती है, लेकिन कुछ मामलों में उचित विलोपन नहीं होता है इसलिए आपको फ़ाइल को मैन्युअल रूप से निकालना होगा
तैमूर चंगेज़

सावधान: यह आपके ब्राउज़र को भी मार देगा यदि यह इंगित कर रहा है: 3000!
एरोरम

1
सही समाधान के लिएsudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

फिर आपको माणिक प्रक्रिया देखनी चाहिए और आप दौड़ सकते हैं

kill -9 processid

अब आपको प्रक्रिया चलाने के लिए अच्छा होना चाहिए

rails s thin

कई प्रक्रियाओं को चलाना एक अच्छा विचार नहीं है और मैंने जो पढ़ा है उससे बहुत से लोग सहमत हैं। मैंने कई मेमोरी लीक्स को रेल के साथ दुर्भाग्य से देखा है इसलिए मैं दो प्रक्रियाओं को चलाने की कल्पना नहीं कर सकता। मुझे पता है कि एक ओवरटाइम के साथ मेरा पेज रीफ़्रेश हो जाता है क्योंकि डेटा मेमोरी में स्टोर हो जाता है।


27
kill -9 $(lsof -i tcp:3000 -t)

2
@CalamityAdam रेल आमतौर पर पोर्ट 3000 पर चलती है। वह उस पर आधारित प्रक्रियाओं की खोज करता है और उनसे केवल पीआईडी ​​प्राप्त करता है ( -tविकल्प) और फिर उस प्राप्त पीआईडी ​​द्वारा प्रक्रिया को मारता है।
तोमटली

13

आप इसे मारकर प्रक्रिया से छुटकारा पा सकते हैं:

kill -9 $(lsof -i tcp:3000 -t)

मैं यह पसंद है। अच्छा और संक्षिप्त, फिर भी पूरा। चीयर्स।
लूनाकोडगर्ल

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

फोरमैन स्टार्ट आदि सेवा शुरू करते हैं


4

यह तब होता है जब आप अपनी सर्वर प्रक्रिया को मारते हैं और पीआईडी ​​फाइल अपडेट नहीं होती थी। फ़ाइल Server.pid को हटाने के लिए सबसे अच्छा समाधान है ।

कमांड का उपयोग करें

rm <path to file Server.pid>


4

gem install shutup

फिर अपने रेल परियोजना के वर्तमान फ़ोल्डर में जाएं और चलाएं

shutup # यह वर्तमान में चल रही रेल प्रक्रिया को मार देगा

आप हर बार 'शटअप' कमांड का उपयोग कर सकते हैं

डिक्लेमर: मैं इस रत्न का निर्माता हूं

नोट: यदि आप rvm का उपयोग कर रहे हैं तो विश्व स्तर पर मणि स्थापित करें

rvm @global do gem install shutup

3

संभवतः आपने सर्वर को निलंबित कर दिया है: ^Z

चार डिजिटल नंबर जो vim C:/Sites/folder/Pids/Server.pidsआउटपुट करता है वह है प्रोसेस आईडी।

आपको kill -9 processidप्रोसेस आईडी को 4 नंबरों के साथ बदलना चाहिए जो vim (या अन्य एडिटर) आउटपुट करता है।


सर्वर को ठीक से रोकने का सही तरीका क्या है? CTRL + C?
stt106 16

1

यदि आप विंडोज पर हैं, तो आपको केवल एक कदम 'रेल्स रिस्टार्ट' के रूप में करने की आवश्यकता है और फिर दोबारा टाइप करें 's s' आप जाने के लिए अच्छे हैं।


1

विंडोज रेल्स 5.2 पर, इस फाइल को डिलीट करें

c:/Sites/<your_folder>/tmp/pids/server.pid

और भाग खड़ा हुआ

rails s

फिर।


1

Daud: fuser -k -n tcp 3000

यह डिफ़ॉल्ट पोर्ट 3000 पर चल रही प्रक्रिया को मार देगा।


0

मेरे पास बस यह मुद्दा था और इसे एक अलग पोर्ट पर सेट करने की कोशिश की गई, लेकिन मुझे केवल एक चीज की जरूरत थी वह थी मेरा डिलीट करना [app_directory]/tmp/pids/server.pidऔर जाने के लिए सब कुछ अच्छा था।


0

Daud:

उबुन्टु / लाइनक्स में

 sudo rm /var/www/html/rails/WBPOCTEST/tmp/pids/server.pid

या

 pkill -9 ruby

या

lsof -wni tcp:3000

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