尝试启动rails 4.1.1服务器时出现此错误:
Listening on 0.0.0.0:3000, CTRL+C to stop
Exiting
/Users/darrenburgess/.rvm/gems/ruby-2.1.2@myflix/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
我尝试了以下命令来查找并终止该进程,但是没有一个命令显示任何运行在3000上的服务器
ps ax | grep rails
ps ax | grep ruby
lsof -i TCP | grep LISTEN
lsof -i :3000
根据我对堆栈溢出的研究,这些似乎是发现运行端口的所有可用方法。
在rails 5应用程序中,我收到以下类似错误:
Listening on tcp://0.0.0.0:3000
Exiting
/Users/darrenburgess/.rvm/gems/ruby-2.3.1/gems/puma-3.7.0/lib/puma/binder.rb:269:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
请注意,我可以在其他端口上启动rails服务器。
即使在机器重启后,此错误仍然存在。似乎我已经用尽所有查找和查杀正在使用的端口的途径。我可以尝试其他什么?
更新: @ hjpotter92建议运行:
netstat -lntp | grep 3000
然而,这不起作用,因为p
参数需要一个选项。根据{{1}},协议列表位于man netstat
。
我查看了该文件,发现etc/protocols
是列出的协议。但是,此命令不返回任何输出:
tcp
此命令也不会返回任何内容:
netstat -lntp tcp | grep 3000
答案 0 :(得分:0)
您可以尝试像lsof -i :3000
一样扫描端口,然后使用sudo kill -9 <PID>
终止该过程。
答案 1 :(得分:0)
嗯,事实证明这个问题的答案相当模糊。 FileMaker服务器16的Node实例在端口3000上运行。我在我的Rails开发机器上运行FileMaker服务器。
这个命令有助于发现:
sudo lsof -P -i :3000
结果
node 562 fmserver 20u IPv6 0x3ef1908b38776fe5 0t0 TCP *:3000 (LISTEN)
我可以杀死该进程,但是选择禁用Node实例(FileMaker REST / Data API)。
此处的文档显示FileMaker 16正在使用该端口。 http://help.filemaker.com/app/answers/detail/a_id/16319