【发布时间】:2012-10-17 23:40:22
【问题描述】:
我正在开发一个 Sinatra 应用程序,我正在使用“rackup”来启动 Webrick。我应该怎么做才能阻止它?现在我正在使用 Ctrl+Z,它 似乎 停止了。但是,当我尝试再次启动它时,它会说端口已经绑定。
我尝试了很多端口,每次启动,停止,然后在我再次重新启动时说它正在使用。
我该如何解决?
【问题讨论】:
我正在开发一个 Sinatra 应用程序,我正在使用“rackup”来启动 Webrick。我应该怎么做才能阻止它?现在我正在使用 Ctrl+Z,它 似乎 停止了。但是,当我尝试再次启动它时,它会说端口已经绑定。
我尝试了很多端口,每次启动,停止,然后在我再次重新启动时说它正在使用。
我该如何解决?
【问题讨论】:
Ctrl+Z 只会“暂停”进程,而不是终止/杀死它。
要真正杀死它,在进程表中找到它并执行kill -9 [PID]
喜欢:
ps auxwww | grep ruby
slivu 16244 0.0 0.5 2551140 61220 s020 R+ 1:18AM 0:10.70 ruby app.rb
第二列 (16244) 是 PID。
另一种方法是使用 Ruby “捕获”INT 信号并显式退出应用程序。
在您的应用中:
Signal.trap 'INT' do
Process.kill 9, Process.pid
end
【讨论】:
延续 slivu 的回复,
如果您仍在同一个终端中,请使用CTRL+C 终止进程。
如果你在后台启动它,或者想从不同的终端杀死,使用
ps aux | grep [r]ackup | awk '{print $2}' | xargs sudo kill -9
【讨论】:
CTRL+C 如何在带有 webrick 服务器的 Rails 中工作,你错过了
CTRL-C 无法停止由 WEBRick 支持的普通应用程序