नोड.जेएस सर्वर के सभी उदाहरणों को रोकें


186

यह मेरा पहली बार Node.js के साथ काम कर रहा है और मैं इस समस्या में भाग गया:

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

यह समस्या है - मैं एक्सप्रेस मॉड्यूल का उपयोग कर रहा हूं और मेरा ऐप कुछ पोर्ट (8080) सुन रहा है। जब मैं कमांड लाइन से ऐप शुरू करता हूं, तो यह इस त्रुटि को फेंक देता है:

events.js:71
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: listen EADDRINUSE
    at errnoException (net.js:770:11)
    at HTTPServer.Server._listen2 (net.js:910:14)
    at listen (net.js:937:10)
    at HTTPServer.Server.listen (net.js:986:5)
    at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

भले ही मुझे यकीन नहीं है कि यह त्रुटि क्या हो सकती है क्योंकि मुझे लगता है कि यह है क्योंकि ऐप एक पोर्ट पर सुन रहा है जो पहले से ही उपयोग में है। तो मैंने किया:

netstat -an

मैं देख सकता हूँ

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

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

इसलिए मैं जानना चाहता हूं, मैं सभी सर्वर इंस्टेंस को कैसे रोक सकता हूं? इसके अलावा अगर आप मुझे बता सकते हैं कि कैसे पता लगाया जाए कि पोर्ट पर क्या चल रहा है और इसे मार दें।


1
क्षमा करें, मैं उल्लेख करता हूं कि मैं खिड़कियों के वातावरण पर हूं। कृपया उन कमांड को पोस्ट करें जो प्रासंगिक हैं। धन्यवाद
किरण अंबाती

और यह भी कि आप अपने विंडोज़ टास्कमैनगर में नोड.जेएस टास्क पा सकते हैं। प्रगति को खोजें जिसका नाम Node.js: Server-side ... है और इसे विस्तार से जानकारी खोलें, आपको अपने नोडज की प्रगति और विस्तार का पता चलेगा
Xiuying Lan

यह मेरे लिए काम किया है: superuser.com/questions/1183057/…
20

जवाबों:


422

विंडोज मशीन:

एक Node.js सर्वर को मारने की आवश्यकता है, और आपके पास कोई अन्य नोड प्रक्रिया नहीं चल रही है, आप अपनी मशीन को नामित सभी प्रक्रियाओं को मारने के लिए कह सकते हैं node.exe। यह इस तरह दिखेगा:

taskkill /im node.exe

और अगर प्रक्रियाएं अभी भी बनी रहती हैं, तो आप /fध्वज को जोड़कर प्रक्रियाओं को समाप्त करने के लिए मजबूर कर सकते हैं :

taskkill /f /im node.exe

यदि आपको अधिक महीन दाने वाले नियंत्रण की आवश्यकता है और केवल एक सर्वर को मारने की आवश्यकता है जो एक विशिष्ट पोर्ट पर चल रहा है, तो आप netstatप्रक्रिया आईडी को खोजने के लिए उपयोग कर सकते हैं , फिर इसे एक किल सिग्नल भेजें। तो आपके मामले में, जहां पोर्ट है 8080, आप निम्नलिखित चला सकते हैं:

C:\>netstat -ano | find "LISTENING" | find "8080"

आउटपुट का पाँचवाँ कॉलम प्रक्रिया ID है:

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       14828
  TCP    [::]:8080              [::]:0                 LISTENING       14828

फिर आप इस प्रक्रिया को मार सकते हैं taskkill /pid 14828। यदि प्रक्रिया बाहर निकलने से इनकार करती है, तो /fकमांड में केवल बल (बल) पैरामीटर जोड़ें ।


लिनक्स मशीन:

प्रक्रिया लगभग समान है। आप या तो मशीन पर चलने वाली सभी नोड प्रक्रियाओं को मार सकते हैं ( -$SIGNALयदि SIGKILLअपर्याप्त है तो उपयोग करें ):

killall node

या उपयोग करते हुए netstat, आप एक पोर्ट पर सुनने की प्रक्रिया की PID पा सकते हैं:

$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node

इस मामले में प्रक्रिया आईडी छठे कॉलम में प्रक्रिया नाम से पहले की संख्या है, जिसे आप तब killकमांड में पास कर सकते हैं :

$ kill 1073

यदि प्रक्रिया बाहर निकलने से इनकार करती है, तो बस -9ध्वज का उपयोग करें , जो कि एक है SIGTERMऔर इसे अनदेखा नहीं किया जा सकता है:

$ kill -9 1073

1
क्षमा करें, मैं वास्तव में इन आदेशों का उपयोग कैसे कर सकता हूं? process.exit () कोड में हो सकता है? लेकिन सर्वर पहले से ही चालू है। यह संभावना है कि यह कमांड नोड app.js के साथ शुरू किया गया है लेकिन नोड-देव ऐप नहीं। js. और "नोड किल" काम नहीं कर रहा है। क्या मैं गलत कर रहा हूँ? धन्यवाद
किरण अंबाती

1
process.exit()आपके आवेदन में NodeJS उदाहरण बंद करने का कारण बनता है। killall nodeअपने मशीन पर चलने वाले सभी नोड्स इंस्टेंस को मार देंगे।
20

शुक्रिया @hexacyanide मैं खिड़कियों पर विकसित कर रहा हूं। क्या इससे किंडल नोड एक अमान्य कमांड बन जाता है क्योंकि मैं इसे कमांड लाइन से उपयोग नहीं कर सकता।
किरण अंबाती

3
कोशिश करो taskkill /IM node.exe। यह नामित सभी प्रक्रियाओं को मार देगा node.exe
हेक्सास्कैनाइड

1
मुझे यह काम करने के लिए टास्ककिल / एफ / आईएम नोड ..exe का उपयोग करना पड़ा, धन्यवाद!
लुइस

75

सबसे तेज़ तरीका है

killall node

लिनक्स, ओएस एक्स के साथ काम करता है


आसान विधि लेकिन अगर कोई अन्य अनुप्रयोग चल रहा है तो हमें और अधिक विशिष्ट होना होगा।
राजीव उप्पला

मेरे लिए काम नहीं करता है। node: no process foundइसके अलावा जब मैं एक विशिष्ट प्रक्रिया पर चलने वाली नोड प्रक्रियाओं के लिए grep करता हूं, तो प्रक्रिया आईडी में -एक संख्या के बजाय ही है।
जियोर्गी Gvimradze

49

आप lsofउस प्रक्रिया का उपयोग कर सकते हैं जो आवश्यक पोर्ट के लिए बाध्य है।

दुर्भाग्य से झंडे सिस्टम के आधार पर भिन्न प्रतीत होते हैं, लेकिन मैक ओएस एक्स पर आप चला सकते हैं

lsof -Pi | grep LISTEN

उदाहरण के लिए, मेरी मशीन पर मुझे कुछ मिलता है:

mongod     8662 jacob    6u  IPv4 0x17ceae4e0970fbe9      0t0  TCP localhost:27017 (LISTEN)
mongod     8662 jacob    7u  IPv4 0x17ceae4e0f9c24b1      0t0  TCP localhost:28017 (LISTEN)
memcached  8680 jacob   17u  IPv4 0x17ceae4e0971f7d1      0t0  TCP *:11211 (LISTEN)
memcached  8680 jacob   18u  IPv6 0x17ceae4e0bdf6479      0t0  TCP *:11211 (LISTEN)
mysqld     9394 jacob   10u  IPv4 0x17ceae4e080c4001      0t0  TCP *:3306 (LISTEN)
redis-ser 75429 jacob    4u  IPv4 0x17ceae4e1ba8ea59      0t0  TCP localhost:6379 (LISTEN)

दूसरा नंबर पीआईडी ​​है और जो बंदरगाह वे सुन रहे हैं वह "(लिस्टेन)" से पहले दाईं ओर है। दुष्ट PID का पता लगाएं और kill -9 $PIDअत्यधिक पूर्वाग्रह के साथ समाप्त करें।


हाय जैकब, क्या आप उत्तर को संपादित कर सकते हैं और विंडोज़ संस्करण जोड़ सकते हैं क्योंकि मैं विंडोज़ पर विकसित कर रहा हूं। धन्यवाद
किरण अंबाती

मुझे नहीं पता कि इसे विंडोज पर कैसे करना है, क्षमा करें किरण।
याकूब ग्राउंडवॉटर

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

25

Windows और GitBash Terminal मुझे Windows / Webstorm / GitBash टर्मिनल के अंदर इस कमांड का उपयोग करने की आवश्यकता थी

cmd "/C TASKKILL /IM node.exe /F"

3
यह एक मेरे लिए किया था। धन्यवाद
Adim विक्टर

1
यह एक मेरे लिए भी किया। मुझे विंडोज पर सभी नोड प्रक्रियाओं को मारने का सबसे तेज़ तरीका मिला।
असद

17

यदि आप एक विशिष्ट नोड प्रक्रिया को मारना चाहते हैं, तो आप कमांड लाइन मार्ग पर जा सकते हैं और टाइप कर सकते हैं:

ps aux | grep node

सभी नोड प्रक्रिया आईडी की सूची प्राप्त करने के लिए। अब आप अपनी प्रक्रिया आईडी (पीआईडी) प्राप्त कर सकते हैं, फिर करें:

kill -9 PID

और यदि आप सभी नोड प्रक्रियाओं को मारना चाहते हैं तो करें:

killall -9 node

-9 स्विच खिड़कियों पर अंत कार्य की तरह है। यह प्रक्रिया को समाप्त करने के लिए मजबूर करेगा। तुम कर सकते हो:

kill -l

मारने के आदेश और उनकी टिप्पणियों के सभी स्विच देखने के लिए।


8

आप यह कोशिश कर सकते हैं:

taskkill /IM node.exe -F

7

लिनक्स

अपने दोस्तों को प्रभावित करने के लिए

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9

लेकिन यह वह है जिसे आप याद रखेंगे

killall node


2

यदि आप Windows का उपयोग कर रहे हैं, तो इसका अनुसरण करें:

  1. कार्य प्रबंधक खोलें, इस प्रक्रिया को देखें: टास्क मैनेजर नोड प्रक्रिया दिखा रहा है - Node.js सर्वर-साइड जावास्क्रिप्ट

  2. फिर बस राइट क्लिक करें और "कार्य समाप्त करें"।

  3. बस यही है, अब सभी npm कमांड रन फॉर्म को शुरू करते हैं।


1

गुणक, स्थिर, सबसे अच्छा समाधान:

प्रक्रिया को मारने के लिए fkill का उपयोग करें जो आपका पोर्ट ले रहा है:

fkill -f :8080

Fkill उपयोग कमांड को स्थापित करने के लिए: npm i -g fkill


1

तुम कोशिश कर सकते हो

killall node

आप भी आजमा सकते हैं

killall nodejs

ये कमांड पहले ही कई बार पोस्ट की जा चुकी हैं। उन्हें फिर से पोस्ट करना ठीक है, लेकिन फिर आपको कम से कम अपने उत्तर में कुछ और स्पष्टीकरण जोड़ना चाहिए, ताकि अन्य लोग इससे सीख सकें
निको हसे


0

विंडोज़ ऑपरेटिंग सिस्टम का उपयोग कर रहा हूँ।

मैंने सभी नोड प्रक्रिया को मार दिया और उस ऐप को फिर से चालू किया जो काम करता था।

प्रयत्न

taskkill /im node.exe

0

बैच फ़ाइल से नोड सर्वर को मारने और पुनः आरंभ करने के लिए निम्न कमांड का उपयोग करें

    @echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF


-3

Cmd या bash में दबाएँ: Ctrl + C


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