在 Mac 上查找(并杀死)进程锁定端口 3000

新手上路,请多包涵

如何找到(并杀死)侦听/使用我的 TCP 端口的进程?我在 macOS 上。

有时,在崩溃或一些错误之后,我的 Rails 应用程序会锁定端口 3000。我无法使用 ps -ef 找到它。

跑步时

rails server

我明白了

Address already in use - bind(2) (Errno::EADDRINUSE)

停止 Node.js 进程时会发生同样的问题。即使进程停止并且应用程序停止运行,端口 3000 也会被锁定。再次启动应用程序时,得到

Address already in use (Errno::EADDRINUSE)

原文由 oma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 749
2 个回答
  1. 你可以试试 netstat
    netstat -vanp tcp | grep 3000

  1. 对于 macOS El Capitan 和更新版本(或者如果您的 netstat 不支持 -p ),请使用 lsof
    lsof -i tcp:3000

原文由 ghostdog74 发布,翻译遵循 CC BY-SA 4.0 许可协议

寻找:

 sudo lsof -i :3000

杀:

 kill -9 <PID>

请注意: -9 立即终止进程,并且没有机会自行清理。这可能会导致问题。考虑使用 -15 (TERM) 或 -3 (QUIT) 进行软终止,允许进程自行清理。

原文由 Filip Spiridonov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题