রেলস সার্ভার বলে পোর্ট ইতিমধ্যে ব্যবহৃত, কীভাবে এই প্রক্রিয়াটি মেরে ফেলবে?


275

আমি ম্যাকের উপর আছি, করছি:

rails server

আমি পাই:

2010-12-17 12:35:15] INFO  WEBrick 1.3.1
[2010-12-17 12:35:15] INFO  ruby 1.8.7 (2010-08-16) [i686-darwin10.4.0]
[2010-12-17 12:35:15] WARN  TCPServer Error: Address already in use - bind(2)
Exiting

আমি জানি যে আমি একটি নতুন বন্দরে একটি শুরু করতে পারি, তবে আমি এই প্রক্রিয়াটি মারতে চাই।

উত্তর:


694

ধরে নিই যে আপনি 3000 পোর্টে যা আছে তা হত্যা করতে দেখছেন (যা সাধারণত ওয়েব্রিক সাধারণত ব্যবহার করে) প্রক্রিয়াটির পিআইডি জানতে আপনার টার্মিনালে এটি টাইপ করুন:

$ lsof -wni tcp:3000

তারপরে, প্রক্রিয়াটি মারতে পিআইডি কলামে নম্বরটি ব্যবহার করুন:

$ kill -9 PID

4
আপনি দয়া করে ব্যাখ্যা করতে পারেন -wni
ব্যবহারকারী 99353563

53
কেবল নবীদের জন্য স্পষ্ট করে বলতে: কোডের দ্বিতীয় লাইনে, আপনি কোডের PIDপ্রথম লাইনে প্রবেশ করার পরে আপনার কনসোলে প্রদর্শিত প্রকৃত সংখ্যাটি দিয়ে প্রতিস্থাপন করবেন (যেমন, 12345)।
কোডবিকার

5
এছাড়াও আপনি নিম্নলিখিত ফাইল tmp / 'pids / server.pid আপনার পাগল ডিরেক্টরির মাধ্যমে নেভিগেট করে PID, জানতে পারেন
tandy

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

@ খালি এটি একটি নির্দিষ্ট প্রকল্পের জন্য পিআইডি পাওয়ার একটি ভাল উপায় তবে কখনও কখনও যখন কোনও প্রক্রিয়া হঠাৎ বন্ধ হয়ে যায় তখন ফাইলটি অনুপস্থিত থাকতে পারে তবে সার্ভারটি এখনও চলতে পারে। একটি lsof -wni tcp:3000করা সর্বদা সমস্ত প্রসেসটি সেই প্রোটোকল: পোর্ট সংমিশ্রণে শোনাতে দেখায় । (যেখানে 3000 আপনার স্থানীয় সার্ভার পোর্টের সাথে প্রতিস্থাপন করতে হবে eg
সিডওফসি

125

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


3
প্রথম বন্ধনী মধ্যে সবকিছু একটি প্রক্রিয়া ID ফিরে আসবে যে বন্দর 3000. আর ব্যবহার -tউপায়ে specifies that lsof should produce terse output with process identifiers only and no header - e.g., so that the output may be piped to kill(1).চেয়ে আমি আপনি কি জানেন killকি করতে হবে
Papouche Guinslyzinho

এটি একটি 'সমস্ত ইন এক' লাইন হওয়ায় এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি একটি উপাধিতে রাখুন এবং আপনি যেতে ভাল।
নুবতাকুলার

যদি কোনও ব্যাখ্যা অন্তর্ভুক্ত করা হয় তবে এটি অবশ্যই একটি উঁচু মূল্য।
mwfearnley

2
এটি সমস্ত খোলা ব্রাউজার অধিবেশন সহ সমস্ত প্রক্রিয়া হত্যা করবে। সুতরাং আপনি যখন চেষ্টা করে দেখেন তখন সাবধানতা অবলম্বন করতে চান।
Theterminalguy

1
kill -9অভ্যাস / অভ্যাস দ্বারা ব্যবহার সম্পর্কে গ্রহণযোগ্য উত্তর সম্পর্কে আমার মন্তব্য দেখুন ।
লিন্ডস

29

টিসিপি পোর্ট 3000 ব্যবহার করে আপনাকে প্রোগ্রামের প্রসেস আইডি পেতে হবে process প্রক্রিয়া আইডি পেতে

lsof -i tcp:3000 -t

এবং তারপরে সেই প্রক্রিয়া আইডিটি ব্যবহার করে কেবল উবুন্টু কিল কমান্ড ব্যবহার করে কিল প্রসেস করুন।

kill -9 pid

অথবা কেবল উল্লিখিত কম্বাইন কমান্ডের নীচে রান করুন। এটি প্রথমে পিড আনবে এবং তারপরে সেই প্রক্রিয়াটি মেরে ফেলবে।

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

kill -9অভ্যাস / অভ্যাস দ্বারা ব্যবহার সম্পর্কে গ্রহণযোগ্য উত্তর সম্পর্কে আমার মন্তব্য দেখুন ।
লিন্ডস

17

এই প্রশ্নটি যে কোনও ম্যাকের জন্য নয় এমন কারও পক্ষে হোঁচট খাচ্ছে: ধরে নিচ্ছেন যে আপনি জানেন যে আপনার সার্ভারটি 3000 পোর্টে চলছে, আপনি নিম্নলিখিতটি সম্পাদন করে একটি শটে এটি করতে পারেন:

fuser -k 3000/tcp

টবি যেমন উল্লেখ করেছেন, ম্যাক ওএসে ফুজার প্রয়োগের বিষয়টি বরং আদিম এবং এই আদেশটি ম্যাকের জন্য কাজ করবে না।


1
এটি ম্যাকের উপর কাজ করবে না (ম্যাক প্রশ্নটিতে নির্ধারিত ছিল) কেননা ফুসার কেবল সি, ফ এবং ইউ বিকল্প হিসাবে গ্রহণ করে।
টবি

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

একটি -vপতাকা যুক্ত করা কী প্রক্রিয়াটি মারা গেছে সে সম্পর্কে অল্প পরিমাণে তথ্যও দেখায়। তাই fuser -kv 3000/tcp। হায় ম্যাকস-এর ফুজারের এই ক্ষমতা নেই। kill $(lsof -ti tcp:3000)যদিও মোটামুটি কাছের সমতুল্য।
লিন্ডস

14

কিছু সময় এমন সুযোগ আসে যেখানে রেল সার্ভার সঠিকভাবে বন্ধ হয় না। আপনি রেল দ্বারা ব্যবহৃত প্রক্রিয়া খুঁজে পেতে পারেন

পিএস অক্স | গ্রেপ রেল

আউটপুট মত হবে

user     12609  9.8  0.5  66456 45480 pts/0    Sl+  21:06   0:02 /home/user/.rvm/rubies/ruby-2.2.0-preview1/bin/ruby bin/rails s

এখানে প্রক্রিয়া_আইডি 12609 আপনার রেল সার্ভার দ্বারা ব্যবহৃত হয়।

আপনি কমান্ড দ্বারা সহজেই এটি হত্যা করতে পারেন

কিল -9 12609


এটি আমার জন্য "পিএস অক্স | গ্রেপ রুবি" হয়ে উঠেছে। হতে পারে ওয়েব্রিক থেকে পুমায় স্যুইচ করুন
রিগেট

kill -9অভ্যাস / অভ্যাস দ্বারা ব্যবহার সম্পর্কে গ্রহণযোগ্য উত্তর সম্পর্কে আমার মন্তব্য দেখুন ।
লিন্ডস

সঠিক প্রক্রিয়াটি খুঁজতে আমাকে এটি করতে হয়েছিলps aux | grep puma
সামি বর্নবাউম

11

উপরের সমস্ত উত্তরগুলি সত্যিই ভাল তবে আমার টার্মিনালে যতটা সম্ভব টাইপ করার একটি উপায়ের প্রয়োজন ছিল তাই আমি তার জন্য একটি রত্ন তৈরি করেছিলাম। আপনি একবারেই রত্নটি ইনস্টল করতে পারবেন এবং প্রতিবার আপনি যখন রেলস প্রক্রিয়াটি (বর্তমান ফোল্ডারে থাকাকালীন) হত্যা করতে চান তখন প্রতিবার 'শাটআপ' কমান্ডটি চালাতে পারেন।

gem install shutup

তারপরে আপনার রেল প্রকল্পের বর্তমান ফোল্ডারে যান এবং চালান

shutup # এটি বর্তমানে চলমান রেল প্রক্রিয়াটিকে হত্যা করবে

আপনি যতবার চান 'শটআপ' কমান্ডটি ব্যবহার করতে পারেন

অস্বীকৃতি: আমি এই রত্নটির স্রষ্টা

দ্রষ্টব্য: আপনি যদি rvm ব্যবহার করে বিশ্বজুড়ে রত্নটি ইনস্টল করেন

rvm @global do gem install shutup

এটা ঝরঝরে। উত্সটির দিকে তাকিয়ে, আপনার রত্নটি পিড ফাইলটির সন্ধান করে তবে এটির নিশ্চয়তা নেই। lsofপদ্ধতির আরো নির্ভরযোগ্য।
সর্বোচ্চ আবেদনকারী

@ ম্যাক্সপ্লানার: সত্য, এবং সম্ভবত অন্য কিছু প্রক্রিয়া মারা যাওয়ার সম্ভাবনা রয়েছে যা সম্ভবত সেই বন্দরে শোনা যাচ্ছে, সম্ভবত (দুর্ঘটনার কারণে)।
লিন্ডস

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

আমি এই রত্নটি ইনস্টল করেছি, এবং এটি চালিয়েছি এবং এটি সিনাত্রাকে হত্যা করেছে। যাইহোক, এখন থেকে ডিফল্ট পোর্ট 4567 সাড়া দেয় না বা 'সেট: পোর্ট XXXX' কমান্ড দ্বারা সেট করা অন্য কোনও বন্দর। আমি কীভাবে এটি পরিচালনা করতে পারি?
NevD

2

পিএস অক্স | গ্রেপ রেলগুলি এই কমান্ডটি ব্যবহার করে আপনি সার্ভারটি মেরে ফেলতে পারেন


1

ডিফল্টরূপে, রেল সার্ভার 3000 পোর্ট ব্যবহার করে
So তাই, রেল সার্ভার চালানোর জন্য আপনার কাছে 2 টি বিকল্প রয়েছে।
১. হয় আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে কাস্টম পোর্টটি সংজ্ঞায়িত করে অন্য পোর্টে সার্ভারটি চালাতে পারবেন
rails s -p 3001
২ অথবা আপনি নিম্নলিখিত চলমান রুবি প্রক্রিয়াটি নীচের কমান্ডটি চালিয়ে
killall -9 ruby
চালাতে পারেন তবে রান করুনrails server



-4

টাইপ করুন:

man lsof

তারপরে -w, -n, এবং -i সন্ধান করুন

-i: ইন্টারনেট স্টাফ -n: এটি দ্রুত করে তোলে -w: সতর্কতাগুলিকে টগল করে

ম্যান পৃষ্ঠাগুলিতে ওয়েবে আরও বিশদ রয়েছে


-6

আপনি যদি উইন্ডোজ মেশিনে থাকেন তবে এই পদক্ষেপগুলি অনুসরণ করুন।

c:/project/
cd tmp
c:/project/tmp
cd pids
c:/project/tmp/pids
dir

সেখানে আপনি সার্ভার.পিড নামে একটি ফাইল পাবেন

মুছে ফেল.

c:/project/tmp/pid> del *.pid

এটাই.

সম্পাদনা: দয়া করে এটি উল্লেখ করুন


3
এটি সার্ভারটি বন্ধ করবে না।
নফাফা বুটেফার

যদিও এই কোডটি সমস্যা সমাধানে সহায়তা করতে পারে, কেন এবং / বা কীভাবে এই প্রশ্নের উত্তর দেয় তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে (বিশেষত, আপনি কেন মনে করেন যে কোনও উইন্ডোজ মেশিনের জন্য একটি পরামর্শ কোনও প্রশ্নের জন্য কার্যকর হতে পারে যা বলে যে এটি ম্যাকওএসে রয়েছে) উল্লেখযোগ্যভাবে তার দীর্ঘমেয়াদী মান উন্নত করবে। কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
টবি স্পিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.