服务器已经在Rails中运行

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

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

FYI

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

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

旧解决scheme:

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

你也可以find这个post的更多selectRails更新到3.2.11中断运行多个服务器

新解决scheme

当你运行rails s

=>引导WEBrick

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

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

=> Ctrl-Cclosures服务器

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

所以放置你的path/your_project_path/tmp/pids/server.pid

并删除这个server.pid文件:

 rm /your_project_path/tmp/pids/server.pid 

或者Incase你是服务器被分离,然后按照下面的指导方针:

如果你使用命令“rails -d”来分离你的rails服务器,那么,

使用命令删除rails分离的服务器

 ps -aef | grep rails 

或者通过这个命令

 sudo lsof -wni tcp:3000 

然后

 kill -9 pID 

或者使用这个命令

通过运行该程序的端口名称来查找和终止进程。 为3000replace您的程序正在运行的端口。

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

然后你应该看到ruby进程,你可以运行

 kill -9 processid 

你现在应该很好地运行这个过程

 rails s thin 

运行多个进程似乎不是一个好主意,从我读过的许多人都同意。 不幸的是,我注意到许多内存泄漏,所以我无法想象有两个进程在运行。 我知道有一个加class时间,我的页面刷新越来越慢,因为数据存储在内存中。

 kill -9 $(lsof -i tcp:3000 -t) 
 $ lsof -wni tcp:3000 # Kill the running process $ kill -9 5946 $ rm tmp/server.pids 

工头开始等服务

当你杀死你的服务器进程并且没有更新pid文件时,会发生这种情况。 最好的解决办法是删除文件Server.pid

使用该命令

rm <path to file Server.pid>

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

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

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

gem install shutup

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

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

你可以使用命令'shutup'每次你想要的

DICLAIMER:我是这个gem的创造者

注意:如果您正在使用rvm全局安装gem

 rvm @global do gem install shutup 

如果你在Windows上,你只需要做'轨道重新启动'只有一个步骤,然后再次键入'轨道'你很好去。