node.js সার্ভারের সমস্ত দমন বন্ধ করুন


182

নোড.জেএস এর সাথে এই প্রথম কাজ করা এবং আমি এই সমস্যার মধ্যে পড়ে গেলাম:

আমি একটি আইডিই এর প্লাগইন মাধ্যমে একটি নোড সার্ভার শুরু করেছি। দুর্ভাগ্যক্রমে, আমি আইডিই'র টার্মিনালটি ব্যবহার করতে পারি না। সুতরাং আমি কমান্ড লাইন থেকে স্ক্রিপ্ট চালানোর চেষ্টা করেছি।

এই সমস্যাটি - আমি এক্সপ্রেস মডিউলটি ব্যবহার করছি এবং আমার অ্যাপ্লিকেশনটি কিছু পোর্ট শুনছে (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
দুঃখিত আমি জানালাম না যে আমি উইন্ডোজের পরিবেশে আছি। প্রাসঙ্গিক কমান্ড পোস্ট করুন। ধন্যবাদ
কিরণ অম্বাতি

এবং আপনি আপনার উইন্ডোজ টাস্ক ম্যানেজারে নোড.জেএস টাস্কটি খুঁজে পেতে পারেন। নামটি নোড.জেএস নামটির অগ্রগতিটি সন্ধান করুন: সার্ভার-সাইড ... এবং এর বিশদ তথ্য খুলুন, আপনি আপনার নোডেজের অগ্রগতির পিড এবং বিশদটি পাবেন
ল্যান

এটিই আমার জন্য কাজ করেছেন: superuser.com/questions/1183057/…
অজানা

উত্তর:


417

উইন্ডোজ মেশিন:

একটি নোড.জেএস সার্ভারটি মেরে ফেলতে হবে এবং আপনার কাছে অন্য কোনও নোড প্রক্রিয়া চলছে না, আপনি নিজের মেশিনকে নামের সমস্ত প্রক্রিয়াটি মেরে ফেলতে বলতে পারেন node.exe। এটি দেখতে এই রকম হবে:

taskkill /im node.exe

এবং যদি প্রক্রিয়াগুলি এখনও অব্যাহত থাকে তবে আপনি /fপতাকাটি যুক্ত করে প্রক্রিয়াগুলি শেষ করতে বাধ্য করতে পারেন :

taskkill /f /im node.exe

আপনার যদি আরও সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয় এবং কেবলমাত্র একটি নির্দিষ্ট পোর্টে চলমান একটি সার্ভারকেই মারতে হয় তবে আপনি netstatপ্রক্রিয়া আইডিটি ব্যবহার করতে পারেন , তারপরে এটিতে একটি কিল সংকেত প্রেরণ করুন। সুতরাং আপনার ক্ষেত্রে, বন্দরটি যেখানে রয়েছে 8080, আপনি নিম্নলিখিতটি চালাতে পারেন:

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

আউটপুট এর পঞ্চম কলামটি প্রক্রিয়া আইডি:

  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আপনি কোনও বন্দরে শোনার কোনও প্রক্রিয়ার পিআইডি খুঁজে পেতে পারেন:

$ 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 () কোড থাকতে পারে? সার্ভার ইতিমধ্যে শুরু হয়েছে। সম্ভবত এটি কমান্ড নোড অ্যাপ.জেএস দিয়ে শুরু হয়েছে তবে নোড-ডেভ অ্যাপ.জেএস নয় with এবং "নোড কিলাল" কাজ করছে না। আমি কি এটা ভুল করছি? আপনাকে ধন্যবাদ
কিরণ অম্বাতি

1
process.exit()আপনার অ্যাপ্লিকেশনটিতে নোডজেএস উদাহরণটি বন্ধ হয়ে যায়। killall nodeব্যাশে আপনার মেশিনে চলমান সমস্ত নোডজেএস দৃষ্টান্তটি মেরে ফেলবে।
hexacyanide

ধন্যবাদ @ hexacyanide। আমি উইন্ডোতে বিকাশ করছি। এটি কি কিলাল নোডকে একটি অবৈধ কমান্ড তৈরি করে কারণ আমি কমান্ড লাইন থেকে এটি ব্যবহার করতে পারি না।
কিরণ অম্বাতি

2
ব্যবহার করে দেখুন taskkill /IM node.exe। এটি নামের সমস্ত প্রক্রিয়াটি মেরে ফেলবে node.exe
hexacyanide

1
এটিকে কাজ করতে আমাকে টাস্ককিল / এফ / আইএম নোড.এক্সই ব্যবহার করতে হয়েছিল, ধন্যবাদ!
লুইস

75

দ্রুততম উপায়

killall node

লিনাক্স, ওএস এক্স এর সাথে কাজ করে


সহজ পদ্ধতি তবে অন্য কোনও অ্যাপ্লিকেশন যদি চলমান থাকে তবে আমাদের আরও নির্দিষ্ট হতে হবে।
রাজীব উতপালা

আমার জন্য কাজ করে না। node: no process foundএছাড়াও যখন আমি নির্দিষ্ট পোর্টে চলিত নোড প্রক্রিয়াগুলির জন্য গ্রেপ করি তখন প্রক্রিয়া আইডি -একটি সংখ্যার পরিবর্তে থাকে।
জিওরগি গিভিমরাডজে

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)

দ্বিতীয় নম্বরটি হ'ল পিআইডি এবং পোর্টটি তারা শুনছে "" (LISTEN) "এর আগে ডানদিকে রয়েছে। দুর্বৃত্ত পিআইডি সন্ধান করুন এবং kill -9 $PIDচূড়ান্ত কুসংস্কারের সাথে শেষ করতে।


হাই জ্যাকব, দয়া করে আপনি উত্তর সম্পাদনা করতে এবং উইন্ডোজ সংস্করণ যুক্ত করতে পারেন কারণ আমি উইন্ডোতে বিকাশ করছি। আপনাকে ধন্যবাদ
কিরণ অম্বাতি

উইন্ডোজে এটি কীভাবে করা যায় আমার কোনও ধারণা নেই, দুঃখিত কিরণ।
জ্যাকব ভূগর্ভস্থ

এটি দুর্দান্ত উত্তর, বিশেষত যখন বিভিন্ন পোর্টে একাধিক নোড সার্ভার চলছে। আমি প্রতিটি বন্দরে প্রক্রিয়া আইডির চলমানটি সহজেই পার্থক্য করতে পারি।
modulitos

24

উইন্ডোজ এবং গিটব্যাশ টার্মিনালটি আমার উইন্ডোজ / ওয়েবস্টর্ম / গিটব্যাশ টার্মিনালের ভিতরে এই কমান্ডটি ব্যবহার করা দরকার

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

2
এই এক এটা আমার জন্য। ধন্যবাদ
আদিম ভিক্টর

16

আপনি যদি কোনও নির্দিষ্ট নোড প্রক্রিয়াটি হরণ করতে চান তবে আপনি কমান্ড লাইন রুটে গিয়ে টাইপ করতে পারেন:

ps aux | grep node

সমস্ত নোড প্রক্রিয়া আইডির একটি তালিকা পেতে। এখন আপনি আপনার প্রক্রিয়া আইডি (পিড) পেতে পারেন, তারপরে:

kill -9 PID

এবং যদি আপনি সমস্ত নোড প্রক্রিয়া হত্যা করতে চান তবে করুন:

killall -9 node

-9 সুইচটি উইন্ডোতে শেষ টাস্কের মতো। এটি প্রক্রিয়াটি শেষ করতে বাধ্য করবে। আপনি করতে পারেন:

kill -l

কিল কমান্ডের সমস্ত স্যুইচ এবং তাদের মন্তব্যগুলি দেখতে।


8

আপনি এটি চেষ্টা করতে পারেন:

taskkill /IM node.exe -F



2

আপনি যদি উইন্ডোজ ব্যবহার করেন তবে এটি অনুসরণ করুন:

  1. টাস্ক ম্যানেজার খুলুন, এই প্রক্রিয়াটি দেখুন: নোড প্রক্রিয়া দেখানো টাস্ক ম্যানেজার - নোড.জেএস সার্ভার-সাইড জাভাস্ক্রিপ্ট

  2. তারপরে ঠিক ডান ক্লিক করুন এবং এটি "টাস্ক শেষ করুন"।

  3. এটি হ'ল, এখন সমস্ত এনপিএম কমান্ড রান সূচনা করে।


1

মাল্টিপ্লাটফর্ম, স্থিতিশীল, সেরা সমাধান:

আপনার বন্দরটি নিচ্ছে এমন প্রক্রিয়াটিকে হত্যা করতে fkill ব্যবহার করুন :

fkill -f :8080

Fkill ইউজ কমান্ড ইনস্টল করতে: এনএমপি আই-জি 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


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