ত্রুটি থেকে লোকালহোস্ট কীভাবে প্রকাশ করবেন: শুনুন EADDRINUSE


120

আমি উইন্ডোজ on তে নোডেজে লেখা একটি সার্ভার পরীক্ষা করছি এবং যখন আমি কমান্ড লাইনে পরীক্ষক চালানোর চেষ্টা করব তখন আমি নিম্নলিখিত ত্রুটিটি পেয়েছি

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

রিবুট না করে কীভাবে আমি এটি ঠিক করতে পারি?


9
sudo killall nodeসুবিধাজনক হতে পারে
হাশির হুসেন

উত্তর:


101

এর অর্থ আপনি যে ঠিকানাটি সার্ভারের সাথে বাঁধাইয়ের চেষ্টা করছেন সেটি ব্যবহার। অন্য একটি বন্দর চেষ্টা করুন বা সেই বন্দরটি ব্যবহার করে প্রোগ্রামটি বন্ধ করুন।


3000 বন্দর ব্যবহার করে আমি কিছু খুঁজে পাচ্ছি না, তবে এটি পরিবর্তন করে কাজ করেছে!
ডেনিস

7
যেহেতু এই একক নোড প্রোগ্রামটি কেবলমাত্র আমার মেশিনে 3000 পোর্ট ব্যবহার করে, তাই এটি বেশ পরিষ্কার মনে হয়েছে যে আমার নোড প্রক্রিয়াটির পূর্ববর্তী ইনস্ট্যান্টেশনটি সঠিকভাবে বন্ধ হওয়া থেকে রোধ করার জন্য কিছু ঘটেছে। এটা তোলে কাজ ছিল যখন আমি ব্যবহার node app.jsএবং Ctrl + সি দিয়ে আটকে দিয়েছে, কিন্তু প্রথমবার আমি ব্যবহৃত পর EADDRINUSE সমস্যা হচ্ছে শুরু npm startতাই মনে হয় বাস্তব সলিউশন ব্যবহার পর শাট ডাউন Ctrl + সি চেয়ে কিছু ব্যবহার অন্যান্য হবে, npm start
ডেভিড ম্যাসন

আপনার npm startস্ক্রিপ্ট একাধিক নোড প্রোগ্রাম হতে পারে, বা একটি নোড প্রোগ্রাম যা ব্যাকগ্রাউন্ডে চালিত হতে পারে, বা প্রোগ্রামটিতে সেই পোর্ট ব্যবহারকারী শিশু প্রক্রিয়া থাকতে পারে।
fent

1
খুব ঘন ঘন, নোড-প্রক্রিয়া জেটটি বন্ধ না হওয়ার কারণে এই ত্রুটি ঘটে happens তবে কখনও কখনও বন্দরটি অন্যান্য প্রক্রিয়া দ্বারা ব্যবহৃত হয় এবং তাই সঠিক প্রক্রিয়াটি ব্লক করা বুঝতে / সনাক্ত করা কঠিন হতে পারে। নীচে ওল্ফরেপার্টারের এই সমস্যার সঠিক সমাধান আছে! stackoverflow.com/a/22875192/36975
qualbeen

6
আমি করেছি ps aux | grep node, প্রক্রিয়া আইডিটি (দ্বিতীয় কলাম) খুঁজে পেয়েছিলাম এবং কেবল kill <pid>(আমার ছিল kill 18762) দিয়ে এটি মেরে ফেললাম ।
নিক_ম

168

চালান:

ps -ax | grep node

আপনি এর মতো কিছু পাবেন:

60778 ??         0:00.62 /usr/local/bin/node abc.js

তারপরে:

kill -9 60778

ধন্যবাদ! আমার মেশিনে কাজ করে!
olefrank

ধন্যবাদ। এটি আমার দরকার ছিল। আমি pm2 ইনস্টল করেছি যা স্বস্টার্টগুলি নোড অ্যাপ্লিকেশনটি বন্ধ হয়ে গেলে। অটোস্টার্ট নোডে আমাকে পিএম 2 অক্ষম করতে হয়েছিল।
KlevisGjN

কাজ করে! অনেক অনেক ধন্যবাদ
উইম ডেন হার্ডার

9
উইন্ডোজে আপনি কীভাবে এটি করবেন?
উইলিয়াম

kill -15 60778এটি আরও ভাল হতে পারে কারণ এটি প্রেরণটি সুস্পষ্টভাবে প্রস্থান করতে পারে ( SIGTERM) পরিবর্তে যদি কোনও প্রেরণ করেSIGKILL
সুদৃ exit়ভাবে

39

লিনাক্সে (উবুন্টু ডেরিভেটিভস অন্তত)

killall node

এই ফর্ম চেয়ে সহজ।

ps | grep <something>
kill <somepid>

আপনার এতিম শিশু বন্দরটি ধরে রাখলে কোনও কাজ করবে না। পরিবর্তে, এটি করুন:

netstat -punta | grep <port>

যদি বন্দরটি ধরে রাখা থাকে তবে আপনি এরকম কিছু দেখতে পাবেন:

tcp           0      0.0.0.0:<port>          0.0.0.*       LISTEN     <pid>/<parent>

এখন পিড দিয়ে হত্যা করুন:

kill -9 <pid>

1
এটি সম্পূর্ণ উত্তর হিসাবে চিহ্নিত করা উচিত। আমার ক্ষেত্রেও এটি অনাথ শিশু ছিল। এগুলি কি তারা জম্বি প্রক্রিয়া বলে?
নীতীশ ইনপারসুইট অফফ্যাটিস

1
প্রত্যাশিত পরিবর্তে <pid>/<parent>আমি পেয়েছি-
ফ্রান্সিসকো Corrales

35

নিম্নলিখিত কমান্ডটি আপনাকে চলমান নোড প্রক্রিয়াগুলির একটি তালিকা দেবে।

ps | grep node

এই বন্দরটি মুক্ত করতে, নিম্নলিখিতটি ব্যবহার করে প্রক্রিয়াটি বন্ধ করুন।

kill <processId>

3
প্রক্রিয়াটি | grep -v grepবাদ দিতে আপনি একটি যুক্ত করতে চাইতে পারেন grep
গ্যারেট হাইড 21

6
আসল পোস্টারটি যেমন লিখেছিল: "উইন্ডোজ on এ" ... ;-)
গলো রডেন

4
আরও ভাল বিকল্প হতে পারেpidof node
Itay Grudev

pidofbrew install pidof
হোমব্রিউ

1
আপনি যদি আরও বেশি চলমান থাকেন তবে কেবল অ্যাপ্লিকেশনগুলিকে নোড করুন এটি সম্ভব হয় যে ঠিকানাটি অন্য কোনও অ্যাপ্লিকেশনটির সাথে আবদ্ধ। আপনি যে বন্দরটি শুরু করার চেষ্টা করছেন তার সাথে আবদ্ধ পিডটি অনুসন্ধান করা কি ভাল হবে না? উদাহরণস্বরূপ: লিনাক্সের জন্য আপনি নেটস্প্যাট -লএনপ্টু ব্যবহার করতে পারেন গ্রেপ পোর্ট # উইন্ডোগুলির সমতুল্য কি তা নিশ্চিত নয়।
খ্রিস্ট

31

আপনি ত্রুটি পাচ্ছেন EADDRINUSEকারণ আপনার অ্যাপ্লিকেশনটি ব্যবহার করতে চায় এমন বন্দরটি অন্য প্রক্রিয়া দ্বারা দখল করা হয়েছে। এই বন্দরটি ছেড়ে দিতে, আপনাকে দখল প্রক্রিয়াটি শেষ করতে হবে।

আপনি যেহেতু উইন্ডোতে রয়েছেন তাই আপনি কমান্ড প্রম্পট ( cmd) ব্যবহার করে প্রক্রিয়াটি শেষ করতে পারেন । সাথেcmd আপনি ব্লকিং অ্যাপ্লিকেশনটির প্রসেস আইডি (পিআইডি) আবিষ্কার করতে পারেন। প্রক্রিয়াটি শেষ / নিহত করার জন্য আপনার পিআইডি লাগবে।

এখানে ধাপে ধাপে গাইড ...

  1. নির্দিষ্ট পোর্টে চলমান সমস্ত প্রক্রিয়া সন্ধান করুন (উদাহরণস্বরূপ, পোর্টটি "3000"):

    netstat -ano | ": 3000" সন্ধান করুন

  2. দ্য netstatকমান্ড সকল প্রক্রিয়ার নির্দিষ্ট পোর্টের চলমান আপ তালিকা প্রস্তুত করা। netstatফলাফলের শেষ কলামে আপনি PIDগুলি দেখতে পাবেন (উদাহরণস্বরূপ, পিআইডি "8308")। PIDনিম্নলিখিত কমান্ডটি চালিয়ে আপনি একটি সুনির্দিষ্ট সম্পর্কে আরও জানতে পারেন :

    টাস্কলিস্ট / ফাই "পিড ​​একা 8308"

  3. আপনি যদি কোনও প্রক্রিয়া শেষ করতে চান তবে নিম্নলিখিত কমান্ডটি ব্যবহার করে এটি করতে পারেন PID(উদাহরণস্বরূপ, পিআইডি "8308"):

    টাস্কিল / পিড 8308 / এফ

স্ক্রিনশট

এখানে চিত্র বর্ণনা লিখুন


1
কঠিন ব্যাখ্যা।
জো হ্যালি

19

আপনি যখন একটি ত্রুটি পান ত্রুটি: শুনুন EADDRINUSE,

নিম্নলিখিত শেল কমান্ডগুলি চালনার চেষ্টা করুন:

netstat -a -o | grep 8080
taskkill /F /PID 6204

আমি grep8080-এর জন্য এডিট করেছি, কারণ আমি জানি যে আমার সার্ভারটি 8080 পোর্টে চলছে (( staticআমাকে এটি শুরু করার সময় বলে: 'পরিবেশন করা' http : // " http://127.0.0.1:8080 'তে।) আপনাকে অন্য কোনও সন্ধান করতে হতে পারে বন্দর।


1
শেষ পর্যন্ত! একটি উত্তর যা প্রক্রিয়া পরিবর্তে পোর্ট অনুসন্ধান করে। এটি কেবল নোড নয় যা কোনও বন্দর বেঁধে রাখতে পারে!
মাইকেল শ্যাপার

কোন চলমান প্রক্রিয়াটি কোনও পোর্ট লক করছে তা সনাক্ত করার জন্য আমি একটি মডিউল তৈরি করেছি, যার নাম পোরথোগ । এটি মূলত উপরের কোডটি কার্যকর করে।
কোরে

15

ধরুন আপনার সার্ভার চালু আছে port 3000

lsof -i tcp:3000
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    node    11716 arun   11u  IPv6 159175      0t0  TCP *:3000 (LISTEN)

যে ব্যবহারের পরে kill -9 <pid>

উপরের ক্ষেত্রে sudo kill -9 11716


12

একটি নির্দিষ্ট বন্দরে চলমান একটি প্রক্রিয়া হত্যা করতে নীচের কমান্ডটি ব্যবহার করুন - নীচে এই উদাহরণে 3000

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

7

একটি সম্ভাব্য সমাধান যা আমার পক্ষে কাজ করেছিল তা হ'ল ব্রাউজারে উইন্ডোটি বন্ধ করে দেওয়া যেখানে আমার সংশ্লিষ্ট " http: // লোকালহস্ট: 3000 / " স্ক্রিপ্ট চলছিল।


হ্যাঁ, ব্রাউজার উইন্ডো এখনও খোলা লোকালহোস্ট পোর্টগুলির সাথে একটি সাধারণ গ্যাচা :-)
ডেভ এভারিট


6

যখন আপনি একটি ত্রুটি পান

ত্রুটি: EADDRINUSE শুনুন

কমান্ড প্রম্পট ওপেন করুন এবং নিম্নলিখিত নির্দেশাবলী টাইপ করুন:

netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>

পুনরায় আরম্ভ করার পরে ফোন ফাঁক ইন্টারফেস।

আইডি ফোনগ্যাপটি কোন প্রক্রিয়াটি ব্যবহার করছে তা যদি আপনি জানতে চান তবে টাস্ক ম্যানেজারটি খুলুন এবং কলাম শিরোনাম পিআইডি দেখুন এবং পিআইডি নং সন্ধান করুন।


আমি টাস্ককিল কাজ করতে পারিনি, তাই আমি টাস্ক ম্যানেজারটি খুললাম এবং পিআইডি যুক্ত করে সেখানে হত্যা করেছি
টম স্টিকেল

5

পূর্বোক্ত উল্লিখিত killall -9নোড, যা প্রত্যাশিত হিসাবে কাজ করে এবং সমস্যাটি সমাধান করে তবে আপনি কেন kill -9এটির সবচেয়ে ভাল উপায় হবেন না সে সম্পর্কে খুব উত্তরটির সম্পাদনা অংশটি পড়তে চাইতে পারেন ।

তার উপরে আপনি সমস্ত সক্রিয় প্রক্রিয়া অন্ধভাবে হত্যা করার পরিবর্তে একটি একক প্রক্রিয়াটিকে লক্ষ্য করতে চাইতে পারেন।

সেক্ষেত্রে প্রথমে সেই বন্দরে চলমান প্রক্রিয়াটির প্রসেস আইডি (পিআইডি) পান (8888 বলুন):

lsof -i tcp:8888

এটি এমন কিছু ফিরে আসবে:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     57385   You   11u  IPv6 0xac745b2749fd2be3      0t0  TCP *:ddi-tcp-1

(তালিকাভুক্ত) তারপরে ঠিক করুন (পিএস - আসলে করবেন না Please দয়া করে নীচে পড়া চালিয়ে যান):

kill -9 57385

4

এটি ম্যাকটিতে কাজ করে:

ধাপ 1.

sudo lsof -i tcp:3000 (or whatever port you want to kill)

উপরের কমান্ডটি আপনাকে বর্তমানে বন্দরটিতে থাকা প্রসেস আইডি দেবে will

ধাপ ২.

Kill -9 <pid>

3

আপনি অ্যাপ্লিকেশন বা আপনার প্রকল্পের কনফিগারেশন ফাইলটিতে আপনার বন্দর পরিবর্তন করতে পারেন।

ডিফল্ট ('পোর্ট', 80)

80 টি পোর্ট ইতিমধ্যে ব্যবহারে রয়েছে কিনা তা দেখতে আপনি করতে পারেন

netstat -antp | গ্রেপ 80

netstat -antp | গ্রেপ নোড

নোড প্রক্রিয়া ইতিমধ্যে চলছে কিনা তা আপনি দেখতে চান।

PS -ef | গ্রেপ নোড

এবং যদি আপনি এটি ইতিমধ্যে চলমান দেখতে পান তবে আপনি এটি ব্যবহার করে এটি হত্যা করতে পারেন

কিল্লাল নোড


1

আমি 2 সার্ভার তৈরি করেছি, 8081 একই পোর্টে শুনছি, একই কোড থেকে শিখছি, শেখার সময়

1 ম সার্ভার তৈরি শূড EADDRINUSE এর সাথে 2 য় সার্ভার তৈরি ব্যর্থ হয়েছে

node.js কলব্যাক বিলম্বিত কারও কারও পিছনে কারণ হতে পারে বা ২ য় সার্ভার তৈরির ব্যতিক্রম ছিল এবং প্রোগ্রামটি বেরিয়ে গেছে, সুতরাং ১ ম সার্ভারটিও বন্ধ রয়েছে

2 সার্ভার ইস্যু ইঙ্গিত, আমি পেয়েছি: ত্রুটি কিভাবে সমাধান করবেন: নোডেজ ব্যবহার করার সময় শুনুন EADDRINUSE?


1

ত্রুটি: টার্মিনালে netstat -nptl ও তার পরে উবুন্টুতে এটি সমাধানের জন্য EADDRINUSE শুনুনkill -9 {process-number} এই কমান্ডটি নোড প্রক্রিয়াটি মেরে ফেলবে এবং এখন আপনি আবার নোড সার্ভার.js কমান্ড চালানোর চেষ্টা করতে পারেন

প্রাক্তন

শুনুন EADDRINUSE ::: 8080

netstat -nptl

tcp6 0 0 ::: 9000 ::: * তালিকা 9660 / java
tcp6 0 0 ::: 5800 ::: * তালিকা -
tcp6 0 0 ::: 5900 ::: * তালিকা -
tcp6 0 0 ::: 8080 :: : * 10401 / নোড
tcp6 0 0 ::: 20080 ::: * তালিকা 9660 / java
tcp6 0 0 :: 80 ::: * তালিকা -
tcp6 0 0 ::: 22 ::: * তালিকা -
tcp6 0 0 ::: 10137 ::: * তালিকাভুক্ত 9660 / জাভা

কিল -9 10401


2
ব্যবহারকারী বলেছেন এটি উইন্ডোজে আছে। উইন্ডোজ netstatবিভিন্ন পরামিতি গ্রহণ করে। netstat -a -p tcp -b -vপ্রক্রিয়া নাম আউটপুট হবে।
arboreal84

0

আমি আমার ম্যাক এবং আমার রাস্পবেরি পাইতে নোড লাল ইনস্টল করেছি। ঠিক একই সমস্যা ছিল এবং 'কিল্ল' করলে কোনও লাভ হয়নি। একবার আমি রাস্পবেরি পাই বন্ধ করে দিয়ে আমার কম্পিউটার পুনরায় চালু করলাম এটি ঠিকঠাক কাজ করেছিল।



0

উপরের সমস্তটি চেষ্টা করে দেখেছি, তবে রাউজ প্রক্রিয়াটি এখনও খুঁজে পাচ্ছে না, তাদের আবার চেষ্টা করে দেখুন তবে আপনি কমান্ডের সামনে "সুডো" অন্তর্ভুক্ত করবেন তা নিশ্চিত করুন।


0

আপনি যদি ইউআই আরও পছন্দ করেন তবে উইন্ডো টাস্ক ম্যানেজারে নোড.জেএসস প্রক্রিয়াটি সন্ধান করুন এবং এটিকে মেরে ফেলুন।


0

PS -ef | গ্রেপ নোডটি app.js সন্ধান করুন, অ্যাপ্লিকেশনগুলির পিড কিল করুন


0

প্রারম্ভ নোডের চেয়ে কেবল উবন্তুর টার্মিনালে পিল -9 নোড হিসাবে নোডটি মেরে ফেলুন


0

টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার পোর্টটি মারতে হবে

$ sudo killall -9 nodejs

0

[মীমাংসিত]

এটি অনেক দেরিতে হতে পারে তবে এটি একটি কবজির মতো কাজ করছে।

আপনার pm2ইনস্টল করা দরকার

npm install -g pm2

বর্তমান চলমান সার্ভার (সার্ভার.জেএস) বন্ধ করতে:

pm2 stop -f server.js

0

সক্রিয় পোর্ট - 4000 (আমার ক্ষেত্রে) ডাব্লুএসএল 2 / লিনাক্স / ম্যাক চালানোর জন্য আমার প্যাকেজ.জসনে নীচে যুক্ত করে আমি এই সমস্যাটি সমাধান করেছি W

"scripts": {
    "dev": "nodemon app.js",
    "predev":"fuser -k 4000/tcp && echo 'Terminated' || echo 'Nothing was running on the PORT'",
  }

উৎস


-1

নোড সার্ভারকে হত্যা করতে প্রথমে আপনার টার্মিনালে এই কমান্ডটি চালান:

  1. top
  2. অন্য উইন্ডোটি খুলুন তারপরে idপূর্ববর্তী উইন্ডো থেকে সার্ভারটি অনুলিপি করুন : PID number -9 kill সুতরাং এখন আপনি আপনার নোড সার্ভারটি হত্যা করেছেন আপনার অ্যাপটি চালানোর জন্য আবার চেষ্টা করুন।

-1

আমি netstat -ano | grep "portnumber"এই প্রক্রিয়াটির জন্য পোর্ট নম্বর / পিআইডি তালিকাভুক্ত করতে কমান্ডটি ব্যবহার করেছি । তারপরে, আপনি ব্যবহার করতে পারেনtaskkill -f //pid 111111 প্রক্রিয়াটি ধ্বংস , সর্বশেষ মানটি প্রথম কমান্ড থেকে পাওয়া পিড।

একটি সময়ে আমি যে সমস্যার মুখোমুখি হয়েছি তা হ'ল প্রক্রিয়াটি হত্যার পরেও নোড রিসপনিং হয়, সুতরাং নোড প্রক্রিয়াটি ম্যানুয়ালি মেরে ফেলার জন্য আমাকে ভাল ওল্ড টাস্ক ম্যানেজার ব্যবহার করতে হবে।


-4

উইন্ডোতে, দয়া করে এই আদেশটি কার্যকর করুন:

taskkill /F /PID 1952

1
1952 একটি পরিবর্তনশীল। হত্যার প্রক্রিয়াটির আলাদা আইডি থাকতে পারে।
অ্যাড্রিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.