加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 不使用端口时使用的端口

发布时间:2020-12-17 04:30:57 所属栏目:百科 来源:网络整理
导读:我正在尝试运行以下Sinatra应用程序并收到一条错误消息,告诉我无法启动服务器,因为端口已经在使用或因为我没有root权限.在启动Sinatra应用程序之前,我从未遇到过这个问题.几天前我更新了Mountain Lion以获取我的mac,并想知道这是否可能是问题的原因.我也使用
我正在尝试运行以下Sinatra应用程序并收到一条错误消息,告诉我无法启动服务器,因为端口已经在使用或因为我没有root权限.在启动Sinatra应用程序之前,我从未遇到过这个问题.几天前我更新了Mountain Lion以获取我的mac,并想知道这是否可能是问题的原因.我也使用RVM.任何人都可以提出建议……
require "sinatra"

class MyApp < Sinatra::Base
 get '/' do
    "Hello from MyApp"

 end

end 

== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567,CTRL+C to stop
/Users/me/.rvm/gems/ruby-1.9.2-p290@global/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)

更新:
我仍然可以在我的机器上运行rails服务器,所以我认为问题是针对Sinatra的.此外,我几天前能够运行Sinatra应用程序,当我开始玩这个Rack Tutorial时,我指示我明确设置端口.我想知道这是否会永久改变.

>> Rack::Handler::WEBrick.run my_rack_proc,:Port => 9876
[2011-10-24 11:32:21] INFO  WEBrick 1.3.1
[2011-10-24 11:32:21] INFO  ruby 1.9.2 (2011-07-09) [i386-mingw32]
[2011-10-24 11:32:21] INFO  WEBrick::HTTPServer#start: pid=480 port=9876

解决方法

注意:之前我有一个不同的答案.我已经用一个新的,更有针对性的答案取而代之,但是对于仍然在寻找它的人来说,我将旧的答案留在了最底层.

新答案:

此错误是由于您上次运行服务器时关闭终端而未终止服务器.我相信这被称为“无头跑”,就像一只头被切断的鸡.因此,即使没有人在观看,服务器仍在运行并占用称为端口9393的“空间”.当您尝试启动新服务器时,已经有一个正在运行.这有点像停车位:因为那里已经有一辆车,所以你不能在同一个地方放一辆新车.

这是我如何重现错误.我启动了一个sinatra服务器,关闭了终端而没有先杀死服务器,打开了一个新终端,并试图启动另一台服务器.

Taras-MacBook-Air:SurveyDBCGroupProject使用$shotgun
== Shotgun / Thin http://127.0.0.1:9393/
瘦Web服务器(v1.6.1代号Death Proof)
最大连接数设置为1024
听取127.0.0.1:9393,CTRL C停止
/Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in`start_tcp_server’:没有接受者(端口正在使用或需要root权限) )(RuntimeError)
#deleted堆栈跟踪

如果汽车停在您的位置,您会怎么做?您可以拨打拖车并告诉司机车牌号码,并告诉他们将车拖走.

要查找汽车的车牌号,请运行以下设置的commands I found on Stack Overflow

ps aux | grep ruby

这会找到进程ID,即占用“停车位”的“汽车”的车牌号码.注意:占用我的’spot’的服务器实际上是使用编程语言ruby编写的服务器:有点像一些汽车是Chevorlets.我可以告诉找到车牌号码的人去寻找雪佛兰,只要周围没有其他车,他就能找到合适的车.由于这个“僵尸服务器”是我的计算机上运行的唯一ruby进程,告诉grep命令查找ruby将给出正确的进程ID /车牌号码.如果我想更具体一点,我可能会说

ps aux | grep霰弹枪

并得到相同的结果.

– 输出应如下所示:列表中应该有两件事

27235 ?? S 0:00.72 /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/bin/shotgun
27393 s000 S 0:00.00 grep ruby

第一个是您正在寻找的实际“僵尸服务器”.第二件事很有趣,因为你正在寻找包含ruby这个词的所有进程,因此它找到了寻找包含ruby这个词的所有进程的进程.哈哈.

杀死第一个过程.使用以下命令.确保将数字更改为实际进程ID:

杀了-9 27235

您必须将27235更改为您看到的实际进程ID,但您明白了.拖车来了,把车拖到垃圾场,然后离开现场让我使用.

老答案:

我有完全相同的问题,据我所知,这是因为在我运行sinatra应用程序的端口上运行了一个ruby进程.下面是错误(为了简洁起见,删除了堆栈跟踪)和我运行的命令,以找出出错的原因并修复它.

简而言之,我试图启动我的sinatra应用程序,它说端口正在使用或需要root权限.然后我使用了Tin Man的lsof命令(如上所示)来找出正在使用的端口.

它显示ruby在9393端口上运行.我用killall将其杀死.我再次尝试启动我的sinatra应用程序.有效.

Taras-MacBook-Air:sinatra_sandbox tlroys$bundle exec shotgun config.ru 
The source :rubygems is deprecated because HTTP requests are insecure.
Please change your source to 'https://rubygems.org' if possible,or 'http://rubygems.org' if not.
== Shotgun/Thin on http://127.0.0.1:9393/
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 127.0.0.1:9393,CTRL+C to stop
/Users/tlroys/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
Taras-MacBook-Air:sinatra_sandbox tlroys$lsof -i TCP | grep LISTEN
ruby      59176 tlroys    9u  IPv4 0xffffff8012fbdc00      0t0  TCP localhost:9393 (LISTEN)
Taras-MacBook-Air:sinatra_sandbox tlroys$killall ruby
Taras-MacBook-Air:sinatra_sandbox tlroys$bundle exec shotgun config.ru 
The source :rubygems is deprecated because HTTP requests are insecure.
Please change your source to 'https://rubygems.org' if possible,or 'http://rubygems.org' if not.
Shotgun/Thin on http://127.0.0.1:9393/
Thin web server (v1.5.0 codename Knife)
Maximum connections set to 1024
Listening on 127.0.0.1:9393,CTRL+C to stop

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读