EventMachine:"`start_tcp_server':没有接受者(端口正在使用或需要root权限)"

Wil*_*ell 16 ruby port tcp eventmachine

当我尝试运行服务器时,EventMachine::run我不断收到错误消息,说明该端口正在使用中.自从我使用命令在后台运行服务器以来,这开始了nohup.

我很确定我已经杀了我开始的过程:

  • 我找到了红宝石的过程ps,并将其杀死.它不再出现了.
  • 我也跑了lsof -i :8081(8081是我运行它的端口),没有任何显示.
  • 最后,我已经多次更改了ruby程序中的端口以遮挡端口,但仍然出现错误!

我也认为可能是我缺乏root用户,所以尝试root作为无效.

我也重新启动了服务器.

如果还有什么我可以尝试,请告诉我.

注意:这是关于debian的.

小智 25

当您没有正确停止服务器时,例如在使用Ctrl + Z挂起或运行服务器两次时,就会发生这种情况.

如果通过Ctrl + Z停止,这适用于我:

获取正在运行的进程:

$ ps ax | grep rails
18192 pts/28 Sl+  0:05 /home/admin/.rvm/rubies/ruby-2.1.2/bin/ruby bin/rails c
20496 pts/23 Tl 0:08 /home/admin/.rvm/rubies/ruby-2.1.2/bin/ruby bin/rails s
20919 pts/23 S+ 0:00 grep --color=auto rails
Run Code Online (Sandbox Code Playgroud)

然后杀死rails server运行的进程:

$ kill 20496
Run Code Online (Sandbox Code Playgroud)

如果它在几秒钟后没有关闭,你可以尝试用"强制"关闭-9(但是这可以防止从Rails中进行任何清理):

$ kill -9 20496
Run Code Online (Sandbox Code Playgroud)

现在您可以再次启动服务器:

$ rails s
Run Code Online (Sandbox Code Playgroud)


Han*_*lah 25

有同样的问题.

Ran lsof -i :3000(3000是我运行它的端口).

我发现红宝石正在使用该端口.我使用了这个进程kill -9 *pid*.

当我lsof -i :3000再次跑步时,什么都没有出现.

然后我跑了rails s,现在一切正常.


Wil*_*ell 18

我终于明白了:实际上我绑定的IP地址是不正确的!

所以基本上它是一个非常误导的错误消息,如果你得到它,也检查IP地址.

  • 对我来说,它有助于将 Rails s -b 0.0.0.0 更改为 -b 127.0.0.1 (2认同)