কীভাবে ত্রুটি ঠিক করবেন: নোডেজ ব্যবহার করার সময় শুনুন EADDRINUSE?


466

যদি আমি 80 বন্দরটি দিয়ে একটি সার্ভার চালনা করি এবং আমি ব্যবহারের চেষ্টা করি xMLHTTP অনুরোধটি তবে আমি এই ত্রুটিটি পেয়েছি :Error: listen EADDRINUSE

আমি পোর্ট 80-এ একটি সার্ভার চালানোর সময়, যদি আমি একটি অনুরোধ করতে চাই তবে নোডেজগুলির জন্য কেন এটি সমস্যা? ওয়েব ব্রাউজারগুলির জন্য এটি কোনও সমস্যা নয়: সার্ভার চলাকালীন আমি ইন্টারনেটে সার্ফ করতে পারি।

সার্ভারটি হ'ল:

  net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
  }).listen(options.port);

এবং অনুরোধ:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();

আপনি কি নিশ্চিত? বিকল্পগুলি.পোর্ট 80 হিসাবে সংজ্ঞায়িত করা হয়েছে? এক্সএইচআর কোডটি কি কোনও ব্রাউজারে চলছে? এই সার্ভারটি চালু না থাকলে আপনি কি "এনসি-এল 0.0.0.0 80" চালাতে পারবেন?
টিমোথি মেইড

একই ধরণের প্রস্তাব ইস্যু দেখুন stackoverflow.com/questions/8553957/...
মনোহর রেড্ডি Poreddy

আপনি কোন সিস্টেম চালু আছে? কিছু সিস্টেমের জন্য সুডোর প্রয়োজন হয় যদি আপনি একটি নির্দিষ্ট প্রান্তের নীচে পোর্টগুলি শুনতে চান।
কেবম্যান

এই সমস্যাটি দেখা দেয় কারণ আপনি হয় সেই বন্দরে আপনার সার্ভারটি চালিয়েছিলেন এবং আপনি সেই বন্দরটি বন্ধ করেননি, ত্রুটিটি স্পষ্টভাবে বলেছে যে বন্দরটি ইতিমধ্যে ব্যবহারে রয়েছে এটি আমার ক্ষেত্রে ঘটে যখন আমি অন্যান্য প্রকল্পগুলি বন্ধ না করে বনাম কোডে একটি নতুন প্রকল্প খুলি (খোলার মাধ্যমে) ড্র্যাগ এবং ড্রপ দ্বারা)
আশাদ নাসিম

উত্তর:


412

EADDRINUSEএর অর্থ হ'ল পোর্ট নম্বর যা listen()সার্ভারের সাথে আবদ্ধ হওয়ার চেষ্টা করে ইতিমধ্যে ব্যবহৃত।

সুতরাং, আপনার ক্ষেত্রে, ইতিমধ্যে 80 বন্দরটিতে একটি সার্ভার চালানো উচিত।

আপনার যদি এই বন্দরটিতে অন্য কোনও ওয়েবসারভার চলমান থাকে তবে আপনাকে সেই সার্ভারের পিছনে নোড.জেস লাগাতে হবে এবং এটির মাধ্যমে এটির প্রক্সি তৈরি করতে হবে।

listeningআপনার সার্ভারটি সত্যিই শুনছে কিনা তা দেখার জন্য আপনার এই ইভেন্টটি পরীক্ষা করা উচিত :

var http=require('http');

var server=http.createServer(function(req,res){
    res.end('test');
});

server.on('listening',function(){
    console.log('ok, server is running');
});

server.listen(80);

1
আমি কেবল এই সার্ভারটি চালাই। আমি সার্ভারটি শুরু করার আগে, এক্সএমএলএইচটিএইচটিপিওয়েস্ট কাজ করে। আমি 80 বন্দরটিতে সার্ভারটি শুরু করার পরে সার্ভারটিও পুরোপুরি কার্যকরভাবে কাজ করে। তবে আমি সার্ভারটি শুরু করার পরে যদি আমি একটি এক্সএমএলএইচটিএইচপিরিয়ায়েস্ট করি তবে আমি এই ত্রুটিটি পেয়েছি।
ড্যানি ফক্স

6
যদি সার্ভারটি ইতিমধ্যে শুনছে তবে এটি ত্রুটি ফেলবে না?
ট্রাইসিস

1
আমার জন্য এটি স্কাইপ
বিপ

559

আমার জন্য যা সত্যই সাহায্য করেছিল তা হ'ল:

killall -9 node

তবে এটি একটি সিস্টেম প্রক্রিয়াটিকে হত্যা করবে।

সঙ্গে

ps ax

আপনি এটি পরীক্ষা করে দেখতে পারেন।


1
আমার জন্যও আমার ক্ষেত্রে আমি মাত্র দুবার শ্রবণ ফাংশনটি
চালিয়েছি

2
সম্পর্কিত নোটে আপনি যখন পড়তে পারেন আমি কখন কোনও প্রক্রিয়াটি কিল না করি
নোবিতা

12
এখানে ইস্যুটি হ'ল আপনি ছেলেরা প্রথম রান করার পরে নোড প্রক্রিয়াটি নিখুঁতভাবে ছাড়ছেন না। অতএব, নোড এখনও সেই বন্দরের সাথে আবদ্ধ। ps aux | grep nodeযে প্রদর্শন করবে। CTRL + Z দিয়ে অ্যাপ্লিকেশনটি হত্যার পরিবর্তে, অ্যাপ্লিকেশনটিকে CTRL + C দিয়ে প্রস্থান করুন । এটি অ্যাপ্লিকেশনটি করুণভাবে প্রস্থান করে এবং পোর্ট বাইন্ডিং সরিয়ে ফেলা হয়।
রাইজার 101

22
এমন কোনও সমাধানের জন্য 150 টিরও বেশি আপ-ভোট যা আপনার সফ্টওয়্যারকে কোনও ম্যালেট দিয়ে আঘাত করার সমতুল্য।
লিগি

1
এই সমাধানটি বেশ সমস্যাযুক্ত কারণ -9 পতাকা মেমরিটি প্রকাশ না করেই প্রক্রিয়াটি মেরে ফেলবে। আপনার এটি সত্যই কেবল শেষ সমাধান হিসাবে ব্যবহার করা উচিত।
ইয়াকি ক্লিন

279

পূর্বোক্ত killall -9 node, প্যাট্রিক প্রস্তাবিত হিসাবে প্রত্যাশিত হিসাবে কাজ করে এবং সমস্যার সমাধান করে তবে আপনি কেন এই সম্পর্কে খুব উত্তর এর সম্পাদনা অংশটি পড়তে চাইতে পারেন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 (LISTEN)

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

kill -9 57385

আপনি এখানে এই সম্পর্কে কিছুটা আরও পড়তে পারেন ।

সম্পাদনা: আমি আজ মোটামুটি সম্পর্কিত বিষয়ে পড়ছিলাম এবং কেন আমি kill -9একটি প্রক্রিয়া করব না তা এই আকর্ষণীয় থ্রেডটিতে হোঁচট খেয়েছি ।

সাধারণত, আপনি ব্যবহার করা উচিত হত্যা -15 আগে খুন -9 লক্ষ্য প্রক্রিয়া নিজেই পরে সব কিছু পরিষ্কার করার একটি সুযোগ দিতে। (প্রক্রিয়াগুলি সিগিলকে ধরতে বা অগ্রাহ্য করতে পারে না, তবে তারা প্রায়শই সিগমেন্টার ধরতে পারে)) যদি আপনি প্রক্রিয়াটি কী করছে এবং এটি পরিষ্কার করার সুযোগ না দেয়, তবে এটি দূষিত ফাইলগুলি (বা অন্যান্য রাষ্ট্র) ছেড়ে যেতে পারে around এটি একবারে আরম্ভ করার পরে তা বুঝতে সক্ষম হবে না।

সুতরাং, যেমনটি বলা হয়েছে আপনার উপরের প্রক্রিয়াটি আরও ভালভাবে মেরে ফেলা উচিত:

kill -15 57385

সম্পাদনা 2 : এখানে প্রায়শই একটি মন্তব্যে উল্লিখিত হিসাবে এই ত্রুটিটি কোনও প্রক্রিয়াটি নিখুঁতভাবে না বেরোনোর ​​একটি পরিণতি। এর অর্থ, প্রচুর লোক নোড কমান্ড (বা অন্য কোনও) ব্যবহার করে প্রস্থান করে সিটিআরএল + জেড । একটি চলমান প্রক্রিয়া বন্ধ করার সঠিক উপায়টি সিটিআরএল + সি কমান্ড জারি করে যা একটি পরিষ্কার প্রস্থান সম্পাদন করে।

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


আমার এই আদেশটি কোথায় চালানো উচিত? কমান্ড প্রম্পটে? এনপিএম কনসোলে?
ইউলিসেস আলভেস

@ ইউলিসেসএলভস কেবল একটি টার্মিনাল উইন্ডো খুলবে এবং সেখান থেকে প্রক্রিয়াটি মেরে ফেলবে।
নোবিটা

@ নোবিটা কি উইন্ডোজে কাজ করে? এখন আমি বুঝতে পারি এটি ম্যাক ওএস কমান্ড হতে পারে। যাইহোক, আমি আমার পিসি পুনরায় চালু করেছি এবং এই ত্রুটিটি আর পাই নি। আমি মনে করি অন্য কিছু অ্যাপ্লিকেশন একই পোর্ট নোড ব্যবহার করার চেষ্টা করছে।
ইউলিসেস আলভেস

2
pgrep nodeকোনও নোড প্রক্রিয়া আপনার উপর থেকে পালিয়ে গেছে কিনা তা দেখায়। pkill nodeতাদের হত্যা করবে।
Josh.F

3
উইন্ডো, লোকদের জন্য নয় - আপনাকে অন্য একটি বন্দর চেষ্টা করতে হবে বা কম্পিউটার পুনরায় বুট করতে হবে: পি
টম স্টিকেল

62

কেবলমাত্র শীর্ষস্থানীয়, স্কাইপ কখনও কখনও ৮০ বন্দরতে শুনবে এবং তাই আপনি যদি নোড.জেএস বা অন্য কোনও অ্যাপ্লিকেশন থেকে 80 পোর্টে শুনতে চেষ্টা করেন তবে এই ত্রুটি ঘটায়।

বিকল্পগুলিতে অ্যাক্সেস করে এবং অ্যাডভান্সড -> সংযোগ -> পোর্ট 80 ব্যবহার করে (আনটিক করুন) ক্লিক করে আপনি স্কাইপে এই আচরণটি বন্ধ করতে পারেন

স্কাইপ পোর্ট 80 ব্যবহার বন্ধ করুন

PS যে পরিবর্তন করার পরে, স্কাইপ পুনরায় আরম্ভ করতে ভুলবেন না!


14
PS যে পরিবর্তন করার পরে, স্কাইপ পুনরায় আরম্ভ করতে ভুলবেন না!
রব ইভানস

16
এটি আমার মধ্যে দেখা সবচেয়ে স্নিগ্ধ ডিজাইনের ত্রুটি। কিভাবে উন্মাদ স্কাইপ devs তারা যাবে কি কখনো 80 অথবা 443 দায়িত্ব গ্রহণের কথা বিবেচনা?
এজেবি

5
আপনার ডিবাগিং দক্ষতার জন্য বড় +1 যদিও রব।
এজেবি

@ এজেবি তারা এটি করার চেষ্টা করেছে এবং ফায়ারওয়ালের মাধ্যমে ঘুষি মারার জন্য যা বিদেশী যানজটগুলিকে HTTP অনুরোধগুলিতে সীমাবদ্ধ করে, তবে যেখানে ফায়ারওয়ালগুলি ডিপিআই ব্যবহার করছে না তাই কেবলমাত্র বেসিক পোর্ট ব্লকিং করুন do তবুও ... ডিফল্টরূপে এটি সক্ষম করতে কিছুটা নির্বোধ!
রব ইভানস

হ্যাঁ, তারা কেন এটি করবে এ নিয়ে কিছুটা চিন্তা করার পরে আমার কাছে এটি ঘটেছে। তবুও, সত্যিই কুৎসিত ক্লাডেজ। এবং এটি ডিফল্টরূপে সক্ষম হয়েছে এই ধারণাটি কেবল সরল অহঙ্কারী।
এজেবি

38

80 পোর্টে শুনতে পাওয়া প্রক্রিয়াটি হত্যার চেষ্টা করা উচিত।

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

যদি ইউনিক্স ব্যবহার করে এই কমান্ডটি ব্যবহার করে দেখুন:

sudo fuser -k 80/tcp    

1
ধন্যবাদ ইয়াকি কিল্ল নোড আমার জন্য ব্যর্থ হয়েছিল তবে এটি কাজ করেছিল।
প্যাট এম

ধন্যবাদ! কিল্লাল এবং লসফ-আই আমার পক্ষে কাজ করেনি, তবে এটি করেছে।
করফুস

1
আপনি চলমান সমস্ত নোড অ্যাপ্লিকেশনকে হত্যা করতে চাইবেন না।
ইয়াকি ক্লিন

28

ত্রুটির কারণ: আপনি ব্যস্ত ব্যবহার করার চেষ্টা করছেনport number

উইন্ডোজ / ম্যাকের জন্য দুটি সম্ভাব্য সমাধান

  1. বর্তমানে ব্যবহৃত পোর্ট নম্বর নিখরচায়
  2. আপনার বর্তমান প্রোগ্রামের জন্য অন্য একটি পোর্ট নম্বর নির্বাচন করুন


1. ফ্রি পোর্ট নম্বর

উইন্ডোজ

1. netstat -ano | findstr :4200
2. taskkill /PID 5824 /F

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

ম্যাক

আপনি নেটস্ট্যাট চেষ্টা করতে পারেন

netstat -vanp tcp | grep 3000

ওএসএক্স এল ক্যাপিটেন এবং আরও নবীনদের জন্য (বা যদি আপনার নেটস্ট্যাট -p সমর্থন করে না), lsof ব্যবহার করুন

sudo lsof -i tcp:3000

এটি যদি আপনার সমস্যার সমাধান না করে তবে Macব্যবহারকারীরা এই সমস্যাটি সম্পর্কে সম্পূর্ণ আলোচনার জন্য ম্যাকের পোর্ট 3000 লকিং (এবং হত্যা) প্রক্রিয়াটি সম্পর্কে আলোচনা করতে পারেন


২. পোর্ট নম্বর পরিবর্তন করবেন?

উইন্ডোজ

set PORT=5000

ম্যাক

export PORT=5000

আপনি উইন্ডোতেও একটি কমান্ডে করতে পারেন:netstat -ona | findstr ".0:PORT +0.0.0.0:0 +LISTENING" | for /f "tokens=5" %t in ('more') do taskkill /PID:%t /f
জেড খোলা

27

একটি নিয়ামক এনভির অধীনে, আপনি ব্যবহার করতে পারেন:

pkill node আপনার স্ক্রিপ্ট চালানোর আগে কাজ করা উচিত।

মনে রাখবেন এই আদেশটি সমস্তকে হত্যা করবে node প্রক্রিয়াটিকে , যা সঠিক হতে পারে যদি আপনার কাছে একটি ধারক কেবল একটি উদাহরণ চলমান থাকে, আমাদের আপনার এমন vর্ষা রয়েছে যেখানে আপনি গ্যারান্টি দিতে পারেন।

অন্য যে কোনও দৃশ্যে, আমি প্রোগ্রামারেটিকভাবে অনুসন্ধান করে নির্দিষ্ট প্রসেস আইডি বা নামটি খুঁজে পেতে কোনও কমান্ড ব্যবহার করার পরামর্শ দিচ্ছি। আপনার প্রক্রিয়াটি যদি বলা হয় তবে নোড-সার্ভার -১ আপনি করতে পারেন pkill node-server-1

এই সংস্থানটি বোঝার জন্য দরকারী হতে পারে: https://www.thegeekstuff.com/2009/12/4-ways-to-kill-a-process-kill-killall-pkill-xkill/


2
pgrep nodeহাতের সামান্য আগে যদি আপনি কিছুটা সাবধান হতে চান এবং দেখুন কী nodeপ্রক্রিয়াগুলি চলছে
জোশ.এফ

1
পুরোপুরি !, আমি প্রক্রিয়াটির জন্য এটি একটি ধারক বা খুব নিয়ন্ত্রিত জায়গা হলে কথা বলছিলাম।
জাভিয়ের কোবোস

এটি উপরে বর্ণিত অন্যদের তুলনায় আমি বলব দুর্দান্ত উত্তর। সবাই দয়া করে এটি upvote।
জিতেন্দ্র পাওয়ার

@ জাভিয়ারকোবস: আপনি যদি কোনও ধারক বা অনুরূপ নিয়ন্ত্রিত জায়গার মধ্যে কথা বলছিলেন, তবে দয়া করে উত্তরে সেই তথ্যটি যুক্ত করুন। অনেক লোক এ জাতীয় পরিবেশে নয়, বিশেষত একটি বিকাশ মেশিনে, এবং এর ফলে যেমন অনিচ্ছাকৃত পরিণতি হতে পারে। ডাউনভোটিং, তবে যথাযথ স্পষ্টতার সাথে ভোট পরিবর্তন করতে পেরে খুশি।
লিন্ডস

1
অনেকেই ... তবে যিনি জুনিয়র বিকাশকারীদের প্রশিক্ষণে উল্লেখযোগ্য পরিমাণে ব্যয় করেছেন এবং সেই প্রসঙ্গেও, আমি আপনাকে বলতে পারি যে তারা কী করছে তা বুঝতে না পেরে অনেক বড় লোক স্ট্যাক ওভারফ্লোতে উত্তর ব্যবহার করে। .. তারা কেবল একটি সমস্যার মুখোমুখি হচ্ছেন, এবং তাদের সমস্যা বলে মনে হচ্ছে এর সমাধান হিসাবে কিছু উপস্থাপন করেছেন এবং তারা এটি নিয়ে ছুটে চলেছে। সুতরাং ... আমি ব্যক্তিগতভাবে সাইটটি ভাল ব্যাখ্যা এবং ভাল সাধারণ অভ্যাস উত্সাহিত করতে ইচ্ছুক। সুতরাং, আমি এখান থেকে আসছি। আমি জানি যদিও এটি একমাত্র দৃষ্টিভঙ্গি নয়। :)
লিন্ডস

16

আপনার অ্যাপ্লিকেশন ইতিমধ্যে 8080 বন্দরে চলছে running এই কোডটি বন্দরটি মারতে এবং আপনার কোডটি আবার চালাতে ব্যবহার করুন

sudo lsof -t -i tcp:8080 | xargs kill -9

প্রশ্নটি 8080 নয়, 80 পোর্টের উল্লেখ করে। এছাড়াও, সম্ভবত এটি 8080 বন্দরটিতে কোনও আপত্তিকর প্রক্রিয়া থেকে মুক্তি পাওয়ার জন্য কাজ করবে, kill -9এটি প্রায় অবশ্যই অতিমাত্রার ব্যবহার এবং আমার মতে, একটি নির্দিষ্ট ভয়ঙ্কর উপদেশ সম্পর্কে নির্দিষ্ট সতর্কতা ছাড়াই দেওয়া উচিত to এটা। কেবল killসম্ভবত কৌশলটি করা হবে এবং সত্যই, এই প্রশ্নের মূল সমস্যাটি হ'ল, আমি মনে করি, তারা বারবার একটি সার্ভার পুনরায় চালানোর চেষ্টা করছে , সুতরাং এটি কেবল একটি হ্যাক, কোনও স্থির নয়। কী চলছে তা সম্পর্কে তাদের আরও ভাল ধারণা থাকা দরকার, যা এই উত্তরটি সত্যিই সরবরাহ করে না।
লিন্ডস 1

15

এই ত্রুটিটি দিতে পারে এমন আরেকটি জিনিস হ'ল একই নোড কোডের দুটি HTTP সার্ভার। আমি কিছু এক্সপ্রেস 2 এক্সপ্রেস 3 কোড আপডেট করেছিলাম এবং এটি পেয়েছিলাম ...

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});        

// tons of shit.

http.createServer(app).listen(app.get('port'), function(){            
  console.log('Express server listening on port ' + app.get('port')); 
});                                                                   

এবং, এটি এই ত্রুটিটিকে ট্রিগার করেছিল।


14

এটি আমার পক্ষে কাজ করে (আমি ম্যাক ব্যবহার করছি)। এই আদেশটি চালান

lsof -PiTCP -sTCP:LISTEN

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

COMMAND     PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node      17269 hientrq   16u  IPv6 0xc42959c6fa30c3b9      0t0  TCP *:51524 (LISTEN)
node      17269 hientrq   19u  IPv4 0xc42959c71ae86fc1      0t0  TCP localhost:1337 (LISTEN)

এবং চালান kill -9 [YOUR_PID]


11

EADDRINUSEএর অর্থ হ'ল পোর্টটি (যা আমরা নোড প্রয়োগে শুনতে চেষ্টা করি) ইতিমধ্যে ব্যবহৃত হচ্ছে। কাটিয়ে উঠতে, আমাদের সেই বন্দরটি দিয়ে কোন প্রক্রিয়া চলছে তা সনাক্ত করতে হবে।

উদাহরণস্বরূপ যদি আমরা 3000 পোর্টে আমাদের নোড অ্যাপ্লিকেশনটি শুনতে চেষ্টা করি। সেই পোর্টটি ইতিমধ্যে অন্য কোনও প্রক্রিয়া দ্বারা ব্যবহৃত হচ্ছে কিনা তা আমাদের খতিয়ে দেখা দরকার।

ধাপ 1:

$sudo netstat -plunt |grep :3000

উপরের কমান্ড নীচে ফলাফল দেয়।

tcp6       0      0 :::3000                 :::*                    LISTEN      25315/node

ধাপ ২:

এখন আপনি প্রক্রিয়া আইডি পেয়েছেন (25315), সেই প্রক্রিয়াটি হত্যা করুন।

kill -9 25315

ধাপ 3:

npm run start

দ্রষ্টব্য: লিনাক্স ব্যবহারকারীদের জন্য এই সমাধান।


9
lsof -i:3000;
kill -9 $(lsof -t -i:3000);
// 3000 is a your port
// This "lsof -i:3000;" command will show PID 
kill PID 
ex: kill 129393

3
ভবিষ্যতে পাঠকদের কোড / আদেশটি বুঝতে সহায়তা করতে দয়া করে আপনার উত্তরে আরও প্রসঙ্গ যুক্ত করুন।
মিলো

8

সুডো কিল $ (sudo lsof -t -i: 80)

জোর করে হত্যা করার জন্য

সুডো কিল -9 $ (sudo lsof -t -i: 80)

নির্দিষ্ট বন্দরটি মারার জন্য উপরে সিএমডি ব্যবহার করুন এবং তারপরে আপনার সার্ভারটি চালান


8

উভয় কমান্ড চেষ্টা করুন এবং এটি সমস্ত নোড প্রক্রিয়া বন্ধ করবে।

killall 9 node
pkill node
npm start 

1
এই হ্যাকটি আমাকে সাহায্য করেছিল, অনেক সময় বাঁচায় ধন্যবাদ
অনূপ পিএস

5

আপনি যখন কোনও অ্যাপ্লিকেশন চালাতে চান এমন কোনও বন্দরে আপনার কোনও প্রক্রিয়া চলছে তখন এই ত্রুটিটি আসে।

কীভাবে সেই প্রক্রিয়াটি পোর্টে চলমান => কমান্ড: sudo netstat -ap | গ্রেপ: 3000

আউটপুট: আপনি যে পোর্টটি ব্যবহার করছেন তার প্রক্রিয়া সম্পর্কিত তথ্য পাবেন

tcp 0 0 আইপ্যাড্রেস: 3000 : তালিকা 26869 / নোড

এখন আপনি এই প্রক্রিয়াটি sudo হত্যা -9 26869 মারতে পারেন


সমস্ত উত্তর চেক। তবে আপনি আমার সমস্যা সমাধান করুন।
রাহুল


5

EADDRINUSE এর অর্থ আপনার নোডেজ অ্যাপের পোর্ট ইতিমধ্যে ব্যবহৃত use

  • এখন আপনি সেই বন্দরে চলমান প্রক্রিয়া / অ্যাপটিকে হত্যা করেছেন kill
  • অ্যাপটির প্রক্রিয়া আইডি এটি দ্বারা সন্ধান করুন:

lsof -i tcp: 3000

  • এখন আপনি এটি থেকে প্রক্রিয়া আইডি পাবেন।
  • এটি চালান:

কিল -9 প্রক্রিয়াআইডি


4

টাস্ক ম্যানেজার ব্যবহার করে প্রক্রিয়াটি শেষ করার একটি উপায় রয়েছে:

মনে রাখবেন যে এই সমাধানটি কেবল উইন্ডোজের জন্য

  1. টাস্ক ম্যানেজারে যান (বা শর্টকাট Ctrl+ Shift+ ব্যবহার করে Esc)

  2. "পটভূমি প্রক্রিয়াগুলি" এ, "নোড.জেএস" প্রক্রিয়াগুলি সন্ধান করুন এবং সেগুলি সমাপ্ত করুন (এগুলিতে ডান ক্লিক করুন এবং "শেষ কার্য" নির্বাচন করুন)

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

  1. এখন আপনার আবার শুরু করা উচিত

ম্যাক ব্যবহারকারীদের জন্য: 1. 'ক্রিয়াকলাপ মনিটর' চালু করুন 2. উপরের ডানদিকে অনুসন্ধান বারে 'নোড' অনুসন্ধান করুন। ৩. নোড প্রক্রিয়াতে ডাবল ক্লিক করুন এবং প্রস্থান করুন। আপনি সব সেট!!!! শুভ কোডিং।
অ্যাপোজি

3

আমি এই ত্রুটিটি http.client এর আগে (নোডে) আগে দেখেছি এবং যেমনটি আমার মনে আছে, এই সমস্যাটি httpClient আরম্ভ না করা বা httpClient নির্মাণে এবং / অথবা url অনুরোধে খারাপ বিকল্পগুলি সেট না করেই করতে হয়েছিল।


3

আমারও একই সমস্যা রয়েছে এবং আমি টার্মিনালটি কেবল বন্ধ করে একটি নতুন টার্মিনাল খুলি এবং চালাচ্ছি

node server.js

আবার। এটি আমার পক্ষে কাজ করে, কিছুক্ষণের জন্য আবার কাজ না হওয়া পর্যন্ত কয়েক সেকেন্ড অপেক্ষা করতে হবে।

তবে এটি সার্ভার কনসোলের পরিবর্তে কেবল বিকাশকারী মেশিনে কাজ করে ..


3

ত্রুটি: শোনো EADDRINUSE এর অর্থ আপনি যে পোর্টটি আপনার অ্যাপ্লিকেশন সার্ভারে নির্ধারণ / আবদ্ধ করতে চান সেটি ইতিমধ্যে ব্যবহৃত। হয় আপনি আপনার অ্যাপ্লিকেশন অন্য পোর্ট বরাদ্দ করতে পারেন।

বা আপনি যদি একই পোর্টটি অ্যাপটিতে নির্ধারণ করতে চান তবে। তারপরে আপনার কাঙ্ক্ষিত বন্দরে চলমান অ্যাপ্লিকেশনটি হত্যা করুন।

নোড অ্যাপ্লিকেশনটির জন্য আপনি যা চেষ্টা করতে পারেন তা হ'ল নোড অ্যাপের জন্য প্রক্রিয়া আইডিটি নিম্নলিখিতটি সন্ধান করুন:

ps -aux | grep node

প্রক্রিয়া আইডি পাওয়ার পরে, করবেন

kill process_id

-উন্ডোজ 10 এ?
টম স্টিকেল

No -uxx লিনাক্স ভিত্তিক সিস্টেমগুলির জন্য নয়। উইন্ডোজ ভিত্তিক সিস্টেমগুলির জন্য আপনি কাঙ্ক্ষিত নোড প্রক্রিয়াটির জন্য সিস্টেম মনটিয়র সন্ধান করতে এবং এটি শেষ করতে পারেন।
পার্থ ব্যাস

2

ডিবিয়ানে আমি পোর্ট ৮০ এ চালানোর জন্য জানতে পেরেছিলাম যে আপনাকে কমান্ডটি রুট হিসাবে ইস্যু করতে হবে

sudo node app.js

আমি আসা করি এটা সাহায্য করবে


2

আমার ক্ষেত্রে অ্যাপাচি এইচটিটিপি সার্ভার 80 পোর্টে চালিত হয়েছিল আমি কমান্ডটি রুট হিসাবে এটি সমাধান করে সমাধান করেছি

sudo killall httpd

হালনাগাদ

যদি জেনকিন ইনস্টল হয়ে থাকে এবং আপনার ম্যাকটিতে চলছে;

  1. আপনি এটি দিয়ে পরীক্ষা করতে পারেন sudo lsof -i tcp:8080
  2. যদি হ্যাঁ, এবং আপনি জেনকিন্স কেবল একবার বন্ধ করতে চান, চালান: sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

2

মনে হচ্ছে অন্য নোড এনজি সার্ভিস প্রক্রিয়া চলছে। আপনার কনসোলে এটি টাইপ করে পরীক্ষা করুন (লিনাক্স / ম্যাক):

ps aux|grep node

এবং এটি দিয়ে ছেড়ে দিন:

kill -9 <NodeProcessId>

অথবা অল্টারনেটিভলি ব্যবহার

ng serve --port <AnotherFreePortNumber>

আপনার পছন্দমতো একটি বিনামূল্যে পোর্টে আপনার প্রকল্প পরিবেশন করতে।


1

NODE_PORT হত্যার সময়, এটি আপনার ক্রোম প্রক্রিয়া বা একই বন্দরে শোনার মতো কিছু হারাতে পারে এবং বিরক্তিকর।

এই শেল স্ক্রিপ্টটি সহায়ক হতে পারে - আমার ক্ষেত্রে বন্দরটি 1337 হয় তবে আপনি যে কোনও সময় এটি পরিবর্তন করতে পারেন

# LOGIC

CHROME_PIDS=`pidof chrome`
PORT_PIDS=`lsof -t -i tcp:1337`

for pid in $PORT_PIDS
do

if [[ ${CHROME_PIDS} != *$pid* ]];then

    # NOT FOUND IN CHROME PIDS

    echo "Killing $pid..."
    ps -p "$pid"

    kill -kill "$pid"
    fi

done

sails lift
# OR 'node app' OR whatever that starts your node

exit

1

আমার ক্ষেত্রে আমি একটি ওয়েব হোস্টিং ব্যবহার করি তবে এটি স্থানীয় হোস্টে একই রকম, আমি ব্যবহার করেছি:

ps -aef | grep 'node' 

তারপরে নোড প্রক্রিয়াটি দেখার জন্য, কনসোলটি পিআইডি সহ প্রক্রিয়াটি দেখায়। প্রক্রিয়াটি হ্রাস করার জন্য আপনাকে এই আদেশটি ব্যবহার করতে হবে:

kill -9 PID

যেখানে উপরের আদেশটি থেকে পিআইডি প্রক্রিয়া আইডি।


1

দুটি সার্ভার একই পোর্টে শুনতে পারে না, সুতরাং অন্য সার্ভার একই পোর্টে শুনছে কিনা তা পরীক্ষা করে দেখুন, একই পোর্টে এটি চলমান থাকলে ব্রাউজার সিঙ্কের জন্যও পরীক্ষা করে দেখুন


1

উইন্ডোজ 10 এ নোড সহ localhostএবং অন্যদিকে 8000 নয় এমন পোর্টে চলমান অন্যান্য লোকের জন্য ...

কি কাজ করে না:

killall    ?  command not found
ps -aux | grep 'node'     ?     ps:  user x unknown 

যা তথ্য দেখায় কিন্তু এখনও কাজ করে না:

 ps -aef | grep 'node'
 ps ax
 kill -9 61864

কী কাজ করে:

উইন্ডোজে গিট বাশ বা পাওয়ারশেল

  net -a -o | grep 3500   (whatever port you are looking for) 

পিআইডি লক্ষ্য করুন (একেবারে ডানদিকে)
আমি কাজ করতে পারিনি killall... তাই

  1. আপনার টাস্ক ম্যানেজারটি খুলুন
  2. প্রসেস ট্যাবে, নাম বা যে কোনও কলামে ডান ক্লিক করুন এবং পিআইডি অন্তর্ভুক্ত করতে নির্বাচন করুন
  3. পিআইডি অনুসারে বাছাই করুন, তারপরে ডান পিআইডি-তে ডান ক্লিক করুন এবং শেষ টাস্কটি ক্লিক করুন।

উইন্ডোতে এখন এত মজাদার অনুশীলনের পরে আমি বুঝতে পারলাম আমি টাস্ক ম্যানেজারটি ব্যবহার করতে এবং নোড ইঞ্জিনটি সন্ধান করতে এবং এটি শেষ করতে পারি।

এফওয়াইআই, আমি 3500 পোর্টে নোড চালানোর জন্য ভিজ্যুয়াল স্টুডিও কোডটি ব্যবহার করছিলাম এবং আমি ভিএস কোডের মধ্যে গিট ব্যাশ শেলটি ব্যবহার করি। আমি সিটিআরএল + সি দিয়ে কৃপণভাবে বেরিয়ে এসেছি, তবে কখনও কখনও এটি এটি হত্যা করে না। আমি আমার বন্দর পরিবর্তন করতে বা পুনরায় বুট করতে চাই না যাতে এটি কাজ করে। আশা করি এটি অন্যকে সহায়তা করবে। অন্যথায় এটি আমার জন্য ডকুমেন্টেশন।


1

জন্য উইন্ডোজ ব্যবহারকারীদের PowerShell উইন্ডোতে নিম্নলিখিত কমান্ড প্রয়োগ সব নোড প্রসেস হত্যা করতে।

Stop-Process -processname node

1

বিকল্পটি যা আমার পক্ষে কাজ করছে:

চালান:

ps -ax | grep node

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

 8078 pts/7    Tl     0:01 node server.js
 8489 pts/10   S+     0:00 grep --color=auto node    
 kill -9 8078
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.