ঠিকানা ইতিমধ্যে ব্যবহৃত - বাইন্ড (2) (এর্ননো :: EADDRINUSE)


130

আমি পুমা ওয়েব সার্ভারের সাথে রেলস অ্যাপ স্থাপন করার চেষ্টা করছি। কোনও কনফিগার ফাইল দিয়ে পুমা সার্ভার শুরু করার চেষ্টা করার সময় bundle exec puma -C config/puma.rbআমি একটি ত্রুটি পেয়েছি যে ঠিকানাটি ইতিমধ্যে ব্যবহৃত।

কেউ কীভাবে এটি ঠিক করতে জানেন?

bundle exec puma -C config/puma.rb
[23699] Puma starting in cluster mode...
[23699] * Version 2.11.3 (ruby 2.0.0-p353), codename: Intrepid Squirrel
[23699] * Min threads: 5, max threads: 5
[23699] * Environment: development
[23699] * Process workers: 2
[23699] * Preloading application
Jdbc-MySQL is only for use with JRuby
[23699] * Listening on tcp://0.0.0.0:3000
/.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `initialize': Address already in use - bind(2) (Errno::EADDRINUSE)
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `new'
    from /Users/lexi87/.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:210:in `add_tcp_listener'
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:96:in `block in parse'
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:82:in `each'
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/binder.rb:82:in `parse'
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/runner.rb:119:in `load_and_bind'
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/cluster.rb:302:in `run'
    from /.rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/lib/puma/cli.rb:216:in `run'
    from /rvm/gems/ruby-2.0.0-p353/gems/puma-2.11.3/bin/puma:10:in `<top (required)>'
    from /.rvm/gems/ruby-2.0.0-p353/bin/puma:23:in `load'
    from /.rvm/gems/ruby-2.0.0-p353/bin/puma:23:in `<main>'
    from /.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
    from /.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'

1
এটা ঠিক কি বলে। কেউ ইতিমধ্যে 3000 বন্দর ব্যবহার করছে। 3000 বন্দরে কে আছে তা নির্ধারণের জন্য নেটস্যাট ব্যবহার করুন
মিরসিয়া

4
আমি যখন এটি মারার চেষ্টা করি তখন আমি একটি ত্রুটি পাই kill -59780 PID। আমাকে বলে invalid signal specificationlsof -wni tcp:30003000 বন্দরটি কী ব্যবহার করছে তা আমি দেখাতাম
কর্নেলিয়াস উইলসন

1
কিল -9 59780 (সুতরাং "কিল -9 পিড_আইডি" সাধারণভাবে)
মিরসিয়া

উত্তর:


288

আপনাকে পাওয়া পিআইডি নম্বর kill -9 59780সহ 59780প্রতিস্থাপন সহ ব্যবহার lsof -wni tcp:3000করতে হবে ( কোন প্রক্রিয়াটি 3000পোর্ট ব্যবহৃত হয় তা দেখতে এবং পিআইডি প্রক্রিয়াটি দেখতে পাবেন) get

অথবা আপনি কেবল নিজের পুমা কনফিগারটি টিসিপি পোর্টটি ব্যবহার করতে বা অন্য পোর্ট tcp://127.0.0.1:3000থেকে পরিবর্তন করতে পারেন ।30009292

অথবা আপনি ব্যবহার করে আপনার রেল অ্যাপ্লিকেশন শুরু করতে পারেন:

bundle exec puma -C config/puma.rb -b tcp://127.0.0.1:3001

এই উত্তরের জন্য আপনাকে ধন্যবাদ। ওপি-তেও আমি একই ত্রুটি পেয়েছি। এবং আমি বুঝতে পেরেছি যে আমি ইতিমধ্যে rails sঅন্য টার্মিনালে করছি do সুতরাং আমি যে ত্রুটি পেয়েছিলাম। তারপরে আমি সার্ভারটি শুরু করতে আলাদা পোর্ট ব্যবহার করেছি rails s -p 9090
ফাই জাল ডং

129

পুমা প্রক্রিয়া মারতে প্রথমে রান করুন

    lsof -wni tcp:3000 

3000 বন্দরটি কী ব্যবহার করছে তা প্রদর্শন করতে Then তারপরে কিল প্রক্রিয়া চালানোর জন্য ফলাফলের সাথে উপস্থিত পিআইডি ব্যবহার করুন।

উদাহরণস্বরূপ lsof -wni tcp চালানোর পরে: 3000 আপনি এর মতো কিছু পেতে পারেন

    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    ruby    3366 dummy    8u  IPv4  16901      0t0  TCP 127.0.0.1:3000 (LISTEN)

প্রক্রিয়াটি মেরে ফেলতে এখন নিম্নলিখিতটি চালান। (যেখানে 3366 পিআইডি)

kill -9 3366

সমস্যা সমাধান করা উচিত


ধন্যবাদ @ সাও-ক্লিফ এটি আমার সমস্যার সমাধান করেছে আমার কাছে আরও একটি অ্যাপ্লিকেশন 3000 বন্দরে চলছিল
নোমিস

3
এই উত্তরটি কীভাবে এক বছর আগে গৃহীত চেয়ে আরও তথ্য যুক্ত করে?
আন্দ্রে ফিগুয়েরেদো

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

হ্যাঁ. আমি এখন দেখতে পাচ্ছি যে মূল উত্তর ডিআইডি একই তথ্য অন্তর্ভুক্ত করে। তবে আমি এই সংস্করণটি না পড়া পর্যন্ত আমার কী করা দরকার তা আমি পুরোপুরি বুঝতে পারি নি।
জেফ জিভকোভিচ

28

আপনি এই কৌশলটিও চেষ্টা করতে পারেন:

ps aux | grep puma

নমুনা আউটপুট:

myname           77921   0.0  0.0  2433828   1972 s000  R+   11:17AM   0:00.00 grep puma
myname           67661   0.0  2.3  2680504 191204 s002  S+   11:00AM   0:18.38 puma 3.11.2 (tcp://localhost:3000) [my_proj]

তারপর:

kill 67661

ব্যবহার করুন kill -9 67661যদি kill 67661আসলে আপনার জন্য প্রক্রিয়া হত্যা না (উপরোক্ত উদাহরণে অনুযায়ী)। আমার জন্য কাজ! চিয়ার্স!
উইলিয়াম হ্যাম্পশায়ার

3

এই গিথুব সংখ্যায় নীচের স্ক্রিপ্টটি খুঁজে পেয়েছি । আমার জন্য দুর্দান্ত কাজ করে

#!/usr/bin/env ruby
port = ARGV.first || 3000
system("sudo echo kill-server-on #{port}")

pid = `sudo lsof -iTCP -sTCP:LISTEN -n -P | grep #{port} | awk '{ print $2 }' | head -n 1`.strip
puts "PID: #{pid}"
`kill -9 #{pid}` unless pid.empty?

আপনি এটি আইআরবিতে বা কোনও রুবি ফাইলের অভ্যন্তরে চালাতে পারেন।

পরেরটির জন্য, তৈরি করুন server_killer.rbতারপর এটি দিয়ে চালানruby server_killer.rb


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

1

আপনি চলমান প্রক্রিয়াগুলি খুঁজে পেতে এবং হত্যা ps aux | grep puma করতে পারেন : তারপরে আপনি এটি দিয়ে এটি হত্যা করতে পারেনkill PID


0

উপরের সমাধানগুলি যদি উবুন্টু / লিনাক্সে কাজ না করে তবে আপনি এটি ব্যবহার করে দেখতে পারেন

sudo fuser -k -n tcp port

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

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