6

我有一个作为守护进程运行的 Sinatra 应用程序,使用 Apache 端口转发在端口 80 和端口 7655 之间进行调解。过去一直运行良好。今天,不太好。我不知道为什么。

问题:sudo ruby my_process.rb返回:

/var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)

试过:更新所有系统包,更新所有gem。没有帮助(除了来自 eventmachine 的更清晰的错误消息)。

当我跑步时,sudo lsof -i :7655我什么也得不到。当我运行时,sudo ps aux我根本看不到任何Ruby 进程。考虑到错误消息的性质,我发现它非常不规则!

那么,在找出端口不可用的原因时,我是否遗漏了什么?


还:

试过换端口,没用。我想知道它是否与“本地主机”有关?当我 ping localhost 时,我得到所有丢弃的数据包。这似乎不正常。

4

2 回答 2

3

事实证明,主要 Sinatra 脚本中的这两行提供了最多的信息:

set bind: "localhost"
set port: 7655

问题出在本地主机上。环回接口未正确配置。ifconfig显示了lo界面,但尚未为其分配 IP 127.0.0.1。要解决此问题,请在 shell 中运行以下命令(在 Ubuntu Linux 系统上):

ifdown lo
ifup lo
于 2012-10-08T13:05:06.097 回答
0

当您关闭术语时,有时您忘记停止 [CTRL+C] 实际服务器,只需运行以下命令即可杀死所有 ruby​​ 进程,如 sinatra,然后再次运行

killall ruby

您可以通过运行查看您的实际 ruby​​ 进程

ps -ef | grep ruby
于 2022-03-03T16:23:43.783 回答