2

我正在开发一个 Sinatra 应用程序,我正在使用“rackup”来启动 Webrick。我应该怎么做才能阻止它?现在我正在使用 Ctrl+Z ,它似乎停止了。但是,当我尝试再次启动它时,它会说端口已经绑定。

我尝试了许多端口,每次它启动,停止,然后当我再次重新启动它时说它正在使用。

我该如何解决?

4

2 回答 2

2

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
于 2012-10-28T12:07:51.043 回答
2

扩展 slivu 的回复,

CTRL+C如果您仍在同一个终端中,请使用终止该进程。

如果您在后台启动它,或者想从不同的终端终止,请使用

ps aux | grep [r]ackup | awk '{print $2}' | xargs sudo kill -9
于 2012-10-28T13:04:18.357 回答