服务器已经在Rails中运行


137

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

当我打开文件时,它仅输出4位数字,那么我该如何解决此问题?

费耶

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

1
我从\ tmp \ pids中删除了server.pid
user6746262

Answers:


195

删除文件:C:/Sites/folder/Pids/Server.pids

解释 在UNIX环境中,至少我们通常在诸如server.pid之类的文件中跟踪进程ID(pid)。我认为这在这里做同样的事情。该文件可能是崩溃后遗留下来的。


5
该文件的确切作用和原因..您能再解释一下吗:)
swapnesh

11
抱歉,我应该进一步评论。至少在UNIX环境中,通常我们通常在server.pid之类的文件中跟踪进程ID(pid)。我认为这在这里做同样的事情。该文件可能是崩溃后遗留下来的。
rainkinz 2013年

我想我是从Git克隆它的,所以您认为这可能是原因吗?github.com/swapnesh/Add_twitter_bootstrap
swapnesh 2013年

1
完成此操作后,我仍然可以得到3000的“正在使用的端口”。有人知道我该如何解决?谢谢!
daveomcd

5
运行netstat -a -o在提示,看看有什么进程在使用3000端口命令
罗里

172

TL; DR只需运行此命令即可杀死它

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

根本原因: 因为PID锁定在文件中,并且Web服务器认为该文件存在,则意味着它已经在运行。通常,当一个Web服务器关闭该文件被删除,但在某些情况下,适当的缺失不会发生,所以你必须手动删除该文件 的新解决方案

当您运行rails时

=>正在启动WEBrick

=> Rails 4.0.4应用程序从开发开始 http://0.0.0.0:3000

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

=> Ctrl-C关闭服务器

服务器已经在运行。检查/your_project_path/tmp/pids/server.pid。 退出中

因此,将您的路径显示在此处/your_project_path/tmp/pids/server.pid

并删除此server.pid文件:

rm /your_project_path/tmp/pids/server.pid

或如果您的服务器已分离,请遵循以下准则:

如果您使用命令“ rails -d”分离了rails服务器,

使用命令删除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到3.2.11会中断运行多个服务器


因为PID被锁定在文件中,并且Web服务器认为该文件存在,则意味着它已经在运行。通常,当网络服务器关闭时,该文件将被删除,但是在某些情况下,不会正确删除,因此您必须手动删除文件
Taimoor Changaiz

小心,如果指向:3000,这也会杀死您的浏览器!
Aeramor

1
完美的解决方案sudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

然后,您应该会看到ruby过程,然后可以运行

kill -9 processid

您现在应该可以很好地运行该过程

rails s thin

运行多个进程似乎不是一个好主意,据我所读,很多人都同意。不幸的是,我已经注意到许多内存泄漏与Rails相关,所以我无法想象有两个进程正在运行。我知道一次超时后,由于数据存储在内存中,因此页面刷新变得越来越慢。



13

您可以通过杀死进程来摆脱该进程:

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

我喜欢这一个。简洁明了,但完整。干杯。
LunaCodeGirl

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

领班启动等启动服务


4

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

使用命令

rm <path to file Server.pid>


4

gem install shutup

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

shutup #这将杀死当前正在运行的Rails进程

您可以随时使用命令“ shutup”

求职者:我是这颗宝石的创造者

注意:如果您使用的是rvm,请在全局安装gem

rvm @global do gem install shutup

3

您可能通过以下方式暂停了服务器: ^Z

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

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


正确停止服务器的正确方法是什么?CTRL + C?
stt106 '19


1

在Windows Rails 5.2上,删除此文件

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

并运行

rails s

再次。


1

跑: fuser -k -n tcp 3000

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



0

跑:

在Ubuntu / Linux中

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

要么

 pkill -9 ruby

要么

lsof -wni tcp:3000

kill -9 pid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.