服务器已经在 Rails 中运行

当我使用 rails s命令启动 Rails 服务器时,它显示的是 A server is already running. Check C:/Sites/folder/Pids/Server.pids

当我打开文件时,它只输出一个4位数的数字,所以我怎样才能解决这个问题?

仅供参考

  1. 这次没有运行其他 Rails cmd 实例。
  2. 已检查任务管理器,但只有 cmd.exe显示没有其他进程正在运行。(使用 Windows)。
176707 次浏览

删除文件: C:/Sites/file/Pids/Server.Pids

解释 在 UNIX 中,至少我们通常在 server.pid 这样的文件中跟踪进程 id (pid)。我觉得这里也是一样。那份文件可能是坠机后遗留下来的。

只要运行这个命令就可以杀死它

sudo kill -9 $(lsof -i :3000 -t)

根本原因: 因为 PID 是锁定在一个文件和网络服务器认为,如果该文件存在,那么这意味着它已经运行。通常情况下,当一个 web 服务器关闭时,该文件被删除,但在某些情况下,适当的删除不会发生,所以你必须手动删除该文件 新方案

当你运行 铁轨

= > 启动 WEBrick

http://0.0.0.0:3000上开始开发 Rails 4.0.4应用程序

= > 运行 rails server -h获取更多启动选项

= > Ctrl-C 关闭服务器

服务器已经在运行,请检查/your _ project _ path/tmp/pids/server.pid。 退出

因此,将您的路径放在这里/your _ project _ path/tmp/pids/server.pid

并删除这个 服务器 pid文件:

rm /your_project_path/tmp/pids/server.pid

或者,如果您的服务器已经分离,那么请遵循以下指导原则:

如果使用命令“ ails-d”分离 Rails 服务器,

使用命令删除与轨道分离的服务器

ps -aef | grep rails

或者这个命令

sudo lsof -wni tcp:3000

那么

kill -9 pID

或使用此命令

按运行程序的端口名查找并终止进程。对于3000,替换运行程序的端口。

sudo kill -9 $(lsof -i :3000 -t)

老办法:

rails s -p 4000 -P tmp/pids/server2.pid

你也可以在这篇文章中找到更多的选择 Rails Update to 3.2.11中断运行多个服务器

当您终止服务器进程并且没有更新 pid 文件时会发生这种情况。 最好的解决方案是删除文件 服务器 pid

使用命令

rm <path to file Server.pid>

lsof -wni tcp:3000

然后您应该可以看到 Ruby 进程,并且可以运行

kill -9 processid

你现在应该可以运行这个过程了

rails s thin

运行多个进程似乎不是一个好主意,从我读到的许多人同意。不幸的是,我已经注意到许多内存泄漏,所以我无法想象有两个进程运行。我知道,由于数据存储在内存中,一次加班之后,页面刷新速度会变得越来越慢。

kill -9 $(lsof -i tcp:3000 -t)

可能你通过 ^Z暂停了服务器。

vim C:/Sites/folder/Pids/Server.pids输出的四个数字是进程 ID。

应该使用 kill -9 processid,用 vim (或其他编辑器)输出的4个数字替换进程 id。

$ lsof -wni tcp:3000


# Kill the running process
$ kill -9 5946


$ rm tmp/server.pids

工头开始等开始服务

gem install shutup

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

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

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

我是这颗宝石的创造者

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

rvm @global do gem install shutup

如果你是在 Windows 上,你只需要做一个步骤作为 重新启动轨道,然后再次键入 轨道 你可以走了。

你可以通过终止这个过程来摆脱它:

kill -9 $(lsof -i tcp:3000 -t)

运行: fuser -k -n tcp 3000

这将终止在默认端口3000上运行的进程。

在 WindowsRails 5.2上,删除此文件

c:/Sites/<your_folder>/tmp/pids/server.pid

然后逃跑

rails s

再来一次。

我只是有这个问题,并试图设置它到一个不同的端口,但唯一的事情,我需要做的是删除我的 [app_directory]/tmp/pids/server.pid和一切都好去。

跑步:

在 Ubuntu/linux 中

 sudo rm /var/www/html/rails/WBPOCTEST/tmp/pids/server.pid

或者

 pkill -9 ruby

或者

lsof -wni tcp:3000


kill -9 pid

只要打开那个 c:/Sites/file/Pids/server.Pids 并复制那个4位数字 那个4位数值只是一个 PID,您需要杀死它 停止已在运行的进程。

然后使用以下命令停止进程

 kill -9 <pid>

一旦已经运行的进程被停止,然后命中

启动 Rails 服务器

关于 Ubuntu:- sudo kill -9 $(lsof -i :3000 -t)

在哪里, 3000 is port number

对我有用。

旧版本:-

rails s -p 3000 -P tmp/pids/server2.pid

我的码头集装箱没有 lsof。试试 sudo kill -9 $(netstat -ano -p tcp | grep :3000 | awk '{ print $7 }' | grep -Po '^[\d]+')

我有面对这个问题,在我的轨道应用程序时,我使用码头在 Windows 机器。 我只是从项目中删除了 server.pid文件,并重新启动了 Rails 应用程序。

你只需要删除 C:/Sites/folder/Pids/Server.pid这个文件

只需转到应用程序中的 TMP 文件夹。 进入 pids 文件夹并删除当前的文件。现在重新运行服务器。这对我来说很有效。

我追求的是一种我可以凭直觉理解的方式(而不仅仅是记忆)。

你只需要知道两件事

  1. 运行 ps命令列出进程,然后
  2. 运行 kill命令停止进程

例子

然后就很简单了:

ps
# PID TTY           TIME CMD
# 32953 ttys000    0:00.71 -zsh
# 33730 ttys001    0:00.67 -zsh
# 46844 ttys004    0:01.78 puma 4.3.12 (tcp://localhost:3000) [myapp]

寻找与 Rails 服务器匹配的 PID,并将其传递给 kill

kill -9 46844

再次运行 ps以确保它现在已停止。

注意

  • 有关 -9的更多信息,请运行 man kill