【问题标题】:Unable to stop Webrick launched by "rackup"无法阻止“rackup”启动的 Webrick
【发布时间】:2012-10-17 23:40:22
【问题描述】:

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

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

我该如何解决?

【问题讨论】:

    标签: ruby sinatra rack webrick


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      延续 slivu 的回复,

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

      如果你在后台启动它,或者想从不同的终端杀死,使用

      ps aux | grep [r]ackup | awk '{print $2}' | xargs sudo kill -9
      

      【讨论】:

      • @slivu 这不是真的 CTRL+C 如何在带有 webrick 服务器的 Rails 中工作,你错过了
      • Rails 执行与我在这里展示的相同的技巧 - 捕获信号并退出应用程序。 CTRL-C 无法停止由 WEBRick 支持的普通应用程序
      • "pkill -9 rackup" 更短。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2011-11-29
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多