如何杀死rails webrick服务器?

时间:2013-01-09 18:46:28

标签: windows ruby-on-rails-3 webrick

当我尝试通过rails s启动服务器时,收到以下错误消息:

C:\Users\Frankie\Documents\stocktracker>rails s
=> Booting WEBrick
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
A server is already running. Check C:/Users/Frankie/Documents/stocktracker/tmp/p
ids/server.pid.
Exiting

server.pid中列出的数字是8436。

如何手动终止此过程?如何轻松杀死当前正在运行的所有webrick服务器?

5 个答案:

答案 0 :(得分:11)

您可以使用taskkill实用程序。

taskkill /PID 8436

答案 1 :(得分:1)

如果您在OSX上使用iTerm2,您可以打开Toolbelt => ShowToolbelt,选择ruby pid 8436然后点击发送信号杀死它。任何时候,任务杀戮对我都不起作用。

此外,您可以ps -aux | grep rails找到pid。然后就像推荐的其他答案一样杀人。

答案 2 :(得分:0)

以下任务定义适用于我(将其放在lib \ tasks文件夹中的* .rake文件中):

namespace :server do

  # ---------------------------------------------------------------------------
  desc "Clear the previous server instance clutter."
  task :cleanup => :environment do      
    pidfile = 'tmp/pids/server.pid'
    if File.exists? pidfile
      pid = File.read(pidfile).to_i
      if RbConfig::CONFIG['host_os'] =~ /mswin32/
        sh "taskkill /f /pid #{pid}"
        sh "del tmp\\pids\\server.pid"
      else
        sh "kill #{pid}"
        sh "rm #{pidfile}"
      end
      puts "All cleaned up. Yay!"
    else
      puts "Already clean. Whew!"
    end
  end
  # ---------------------------------------------------------------------------
  desc "Start an instance of the server cleanly."
  task :startup => :cleanup do
    sh "rails server"
  end
  # ---------------------------------------------------------------------------
end

现在运行

rake server:startup

在尝试再次运行rails服务器之前,它会清除Windoze上的所有剩余进程和pid文件。

答案 3 :(得分:0)

对于Linux/Ubuntu用户,ubuntu具有kill命令。运行webrick服务器时,在位置APP_DIR/tmp/pids/server.pid内的项目目录中,将保存所有进程ID。
您只需要打开文件,就会找到当前正在运行的服务器的进程ID。现在,您可以使用以下命令来终止进程

$ kill [pid] # Example kill 8123

答案 4 :(得分:-2)

请按照以下步骤操作:

1.找到'rails s'进程ID: ps -aux | grep rails

2.使用带-9选项的kill命令: kill -p [PID]

你不会失望!!