地址已被 puma-dev 使用

ogi*_*inc 8 puma ruby-on-rails-5 puma-dev macos-monterey

问题

每当我尝试跑步时

bundle exec puma -C config/puma.rb --port 5000
Run Code Online (Sandbox Code Playgroud)

我不断得到

bundler: failed to load command: puma (/Users/ogirginc/.asdf/installs/ruby/2.7.2/bin/puma)
Errno::EADDRINUSE: Address already in use - bind(2) for "0.0.0.0" port 5000
Run Code Online (Sandbox Code Playgroud)

尝试过的事情

我已经尝试过任何我能想到或读到的东西。这是列表:

1. 重启 Mac。

  • 没有。

2.找到PID并杀掉。

  • 跑步lsof -wni tcp:5000
COMMAND    PID     USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ControlCe 6071 ogirginc   20u  IPv4 0x1deaf49fde14659      0t0  TCP *:commplex-main (LISTEN)
ControlCe 6071 ogirginc   21u  IPv6 0x1deaf49ec4c9741      0t0  TCP *:commplex-main (LISTEN)
Run Code Online (Sandbox Code Playgroud)
  • 杀与sudo kill -9 6071.

  • 当我杀死它时,它会使用新的 PID 重新启动。

> lsof -wni tcp:5000
COMMAND    PID     USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ControlCe 6071 ogirginc   20u  IPv4 0x1deaf49fde14659      0t0  TCP *:commplex-main (LISTEN)
ControlCe 6071 ogirginc   21u  IPv6 0x1deaf49ec4c9741      0t0  TCP *:commplex-main (LISTEN)
Run Code Online (Sandbox Code Playgroud)

3.使用HTOP查找并杀死

  • 过滤用puma.
  • 找到匹配的。
PID USER      PRI  NI  VIRT   RES S CPU% MEM%   TIME+  Command
661 ogirginc   17   0  390G  6704 ?  0.0  0.0  0:00.00 /opt/homebrew/bin/puma-dev -launchd -dir ~/.puma-dev -d localhost -timeout 15m0s -no-serve-public-paths
Run Code Online (Sandbox Code Playgroud)
  • 用 杀死它sudo kill -9 661
  • 使用新的 PID 重新启动。

附加信息

  • Rails 版本是5.2.6.
  • 美洲狮版本是4.3.8.
  • puma-dev 版本是0.16.2.
  • 以下是 puma-dev 的日志:
2021/10/26 09:48:14 Existing valid puma-dev CA keypair found. Assuming previously trusted.
* Directory for apps: /Users/ogirginc/.puma-dev
* Domains: localhost
* DNS Server port: 9253
* HTTP Server port: inherited from launchd
* HTTPS Server port: inherited from launchd
! Puma dev running...
Run Code Online (Sandbox Code Playgroud)

感觉就像我错过了一些明显的东西。可能是由于缺乏对 的一些关键部分和较低部分的理解puma-dev如果通过一些简单的解释可以解决这个问题,我将非常感激。提前致谢!:)

ogi*_*inc 31

为什么

嗯,这很有趣。之前我没有想到要搜索 的 lsof专栏COMMAND

事实证明,它ControlCe的意思是“控制中心”,从蒙特利开始,macOS 默认监听5000端口7000

解决方案

  1. 转到系统偏好设置 > 共享
  2. 取消选中AirPlay Receiver
  3. 现在,您应该能够puma像往常一样重新启动。

来源: https: //developer.apple.com/forums/thread/682332