无法停止轨道服务器

我是新手,我使用的是 ubuntu 机器和 rubymine IDE。问题是我无法停止 Rails 服务器。我试图通过终止 Rails 进程来阻止服务器。但是,当我运行 pgrep -l rails时,没有发现这样的进程。所以,我只能终止 Ruby 进程,但是,服务器不会停止。

我尝试了 ./script/server stop(因为我是通过运行 ./script/server start来启动它的) ,但是,那不起作用。我四处搜索并找到一些堆栈溢出的帖子,试图更改本地主机端口的监听端口,但没有成功。有人能帮忙吗?

202938 次浏览

您可以使用下列其他端口:

rails server -p 3001

通常在您的终端,您可以尝试 Ctrl + C关闭服务器。

另一种扼杀 Ruby on Rails 默认服务器(即 WEBrick)的方法是:

kill -INT $(cat tmp/pids/server.pid)

在你的终端找出 PID 的过程:

$ lsof -wni tcp:3000

然后,使用 PID 列中的数字来终止进程:

例如:

$ kill -9 PID

我找到的其他答案是:

要在 Rails 服务器运行时停止它,请按:

CTRL-C
CTRL-Z

你会得到控制返回到 bash。然后键入(没有 $) :

$ fg

这将返回到过程中,然后正确退出 Rails s

这有点烦人,但肯定比手动终止进程要好。还不算太糟,这是我能想到的最好的办法了。

更新答案:

您可以使用 killall -9 rails来终止所有名称中带有“ rails”的正在运行的应用程序。

killall -9 rails

使用 ctrl+c关闭 Webrick 服务器。

不幸的是,如果它不工作,然后强制关闭终端,并重新启动它。

另一个把戏是

1. open your system-monitor(a gui application) on ubuntu


2. Select processes tab


3. Then look for a process having name 'ruby'


4. End that process

检查/tmp/tmp/server.pid

里面有个芯片。

通常,我会在 cmd 中执行“ kill -9 THE _ PID”

可以按以下方式使用 grep 命令,

ps aux | grep rails

然后

kill -9 {process_id}

当 Rails 服务器没有启动时,这意味着它已经在运行,那么您可以使用新的端口(如下图)启动。

rails s -p 3001

或者 在这种情况下开始和结束你要 在 Rails 目录结构中删除临时文件夹它启动轨道服务器。

杀死 pkill -9 rails的所有轨道过程

最新答案

ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9

这会杀死任何正在运行的 Rails 进程。用其他的东西替换“ Rails”会杀死任何其他进程。

从 tmp/pids 文件夹中删除 server.pid。 在我的示例中,错误是: 服务器已经在运行。

所以,我删除 server.pid

rm /home/sbhatta/myapp/tmp/pids/server.pid 然后运行 rails s

在我的 MAC 上,killall -9 rails不工作,但是 killall -9 ruby可以。

这个问题已经很晚了。 这是我的两分钱。我做了一个耙子任务,当我无法访问服务器时停止它。 不过我只在 Mac 身上测试过。

有了这个,您可以简单地将它添加到您的项目,然后运行 rake 命令。

给你:

要点链接:-最新版本将在这里。 Https://gist.github.com/houmanka/289184ca5d8d92de0499#file-server-rake

这里有些代码:

# Make a file under: `project_root/lib/tasks/server.rake`


# Then paste the following code


namespace :server do
desc "Stop the running server by killing the PID"
task :kill do
STDOUT.puts "Enter port number: "
post_number = STDIN.gets.strip
system "pid=$(lsof -i:#{post_number.to_i} -t); kill -TERM $pid || kill -KILL $pid"
end
end


# Then to use it in the terminal: `rake server:kill`

Ctrl-Z 通常会起作用。

我使用 killall -9 rails像斯里兰卡建议,但它没有工作。我将命令调整为 killall -9 ruby,服务器立即关闭。

Tl; dr: killall -9 ruby

我已经注意到在 Windows (进口使用10,但不确定是否相同的奥勒)。如果您使用 cmd.exe 和 ctrl + c,则 raisl 服务器将正确停止。

但是,如果使用 Git Bash,则不会这样做。它说它有,但是当你看 TMP PID,它仍然在那里。

也许是个带有 Git bash 的窃听器?

我通常使用:

killall ruby

或者

pkill -9 ruby

它将杀死所有运行如 rails serverrails console等的与 ruby 相关的进程。

另外,请确保在用于启动服务器的同一终端(选项卡)中执行命令 Cntrl + C。

在我的情况下,我有2个标签,但我忘记停止服务器从正确的标签,我想知道为什么 Cntrl + C 不工作。

一个超级简单的方法就是

gem install shutup

然后进入 Rails 项目的当前文件夹并运行

这将终止当前运行的 Rails 进程

你可以在任何时候使用“关闭”命令

我是这颗宝石的创造者

注意: 如果您正在使用 rvm,请在全局范围内安装 gem

rvm @global do gem install shutup

以下是终止服务器进程的步骤:

1. lsof -i tcp:3000

2. kill -9 1234

其中 1234是进程的 PID: localhost: 3000在步骤1中显示。

或者

删除 Rails.root/tmp/pids/下的文件(server.pid)并重新启动服务器。

或者

使用以下命令在另一端口打开应用程序:

rails s -p 3001

1. 只需从 Rails 应用程序目录中删除 pid 文件

Rails_app -> tmp -> pids -> pid file

删除文件并运行

rails start


2. 对于 Rails 5.0及以上版本,可以使用以下命令

rails restart

步骤1: 查找消耗3000端口的项目。

lsof -i:3000

步骤2: 查找名为

为了 Mac

ruby      TCP localhost:hbci (LISTEN)

为了 Ubuntu

ruby      TCP *:3000 (LISTEN)

步骤3: 查找进程的 PID 并杀死它。

kill -9 PID

对于我的 Windows 10机器,Ctrl - C + Ctrl - D工作。

killall -9 ruby将关闭所有的 Ruby 进程,至少在我的机器上,Rails 服务器显示为 Ruby 进程。killall -9 rails更加具体,并且不适用于旧版本的 Rails 服务器(它提供了一个‘ Rails: no process found’,因为这个进程被命名为 ruby)

前段时间遇到过这个问题。在 activeadmin 中提交一个表单之后,Rails 服务器挂起了,我无法使用常规方法杀死它(即使在 ctrl + z 之后,它仍然在后台运行)。学习者的回答有所帮助,但是这个命令不需要进程 ID。

这很简单

pkill -9 ruby

不多不少

我们可以使用 PORT no 在 Linux 上终止 Rails 会话

fuser -k 3000/tcp

这里3000是一个端口号。 现在重新启动服务器,您将看到服务器处于运行状态。

遵循以下步骤:

  1. 打开你的项目
  2. 在 tmp 文件夹中选择
  3. 选择 pids 文件夹
  4. 删除 server.pid 文件
  5. 现在启动 Rails 服务器
  1. 只要使用给定的位置打开文件 sudo vi /Users/user1/go/src/github.com/rails_app/rails_project/tmp/pids/server.pid

  2. 查找运行进程的 process _ id/thread _ id。

  3. 使用 kill -9 84699杀死指定的进程/线程

在6号轨道上使用

ps aux | grep rails没有返回服务器进程

我必须这么做

ps aux | grep puma

找到实际的进程,然后使用

kill -9 {process_id}

如果你正在使用一个更现代的 Rails 版本,并且它使用 Puma 作为 web 服务器,你可以运行以下命令来找到被卡住的 Puma 进程:

ps aux | grep puma

这将产生类似的结果:

85923 100.0  0.8  2682420 131324 s004  R+    2:54pm   3:27.92 puma 3.12.0 (tcp://0.0.0.0:3010) [my-app]
92463   0.0  0.0  2458404   1976 s008  S+    3:09pm   0:00.00 grep puma

您需要不引用 grep的进程。在本例中,进程 ID 为85923。

然后,我可以运行以下命令来终止该进程:

kill -9 85923

enter image description here

按 Ctrl-C 就会停止
如果没有检查