当我使用rails s
命令启动 Rails 服务器时,它显示A server is already running. Check C:/Sites/folder/Pids/Server.pids
当我打开文件时,它只输出一个 4 位数字,那么我该如何解决这个问题?
供参考
- 这次没有运行 Rails cmd 的其他实例。
- 检查任务管理器,但只
cmd.exe
显示没有其他进程正在运行。(使用 Windows)。
当我使用rails s
命令启动 Rails 服务器时,它显示A server is already running. Check C:/Sites/folder/Pids/Server.pids
当我打开文件时,它只输出一个 4 位数字,那么我该如何解决这个问题?
供参考
cmd.exe
显示没有其他进程正在运行。(使用 Windows)。TL;DR 只需运行此命令即可杀死它
sudo kill -9 $(lsof -i :3000 -t)
根本原因: 因为 PID 被锁定在一个文件中,并且 Web 服务器认为如果该文件存在则意味着它已经在运行。通常,当 Web 服务器关闭时,该文件会被删除,但在某些情况下,不会发生正确删除,因此您必须手动删除该文件 新解决方案
当你运行rails s
=> 启动 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 detached server
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 中断运行多个服务器
删除文件:C:/Sites/folder/Pids/Server.pids
解释 至少在 UNIX 领域,我们通常在 server.pid 之类的文件中跟踪进程 ID (pid)。我认为这在这里做同样的事情。该文件可能是崩溃遗留下来的。
lsof -wni tcp:3000
然后你应该看到 ruby 进程,你可以运行
kill -9 processid
你现在应该很好地运行这个过程
rails s thin
运行多个进程似乎不是一个好主意,从我读过的内容来看,很多人都同意。不幸的是,我注意到许多内存泄漏与rails,所以我无法想象有两个进程在运行。我知道随着时间的推移,我的页面刷新速度越来越慢,因为数据存储在内存中。
kill -9 $(lsof -i tcp:3000 -t)
你可以通过杀死它来摆脱它:
kill -9 $(lsof -i tcp:3000 -t)
$ lsof -wni tcp:3000
# Kill the running process
$ kill -9 5946
$ rm tmp/server.pids
工头启动等启动服务
gem install shutup
然后进入 Rails 项目的当前文件夹并运行
shutup
# 这将杀死当前正在运行的 Rails 进程
您可以随时使用命令“shutup”
免责声明:我是这颗宝石的创造者
注意:如果您使用的是 rvm,请全局安装 gem
rvm @global do gem install shutup
当您终止服务器进程并且 pid 文件未更新时,就会发生这种情况。最好的解决方案是删除文件Server.pid。
使用命令
rm <path to file Server.pid>
可能您通过以下方式暂停了服务器:^Z
。
输出的四个数字vim C:/Sites/folder/Pids/Server.pids
是进程ID。
您应该kill -9 processid
将进程 ID 替换为 vim(或其他编辑器)输出的 4 个数字。
在 Windows Rails 5.2 上,删除此文件
c:/Sites/<your_folder>/tmp/pids/server.pid
并运行
rails s
再次。
如果您在 Windows 上,您只需执行 “rails restart”一步 ,然后再次输入 “rails s” 即可。
跑:
在 Ubuntu/Linux 中
sudo rm /var/www/html/rails/WBPOCTEST/tmp/pids/server.pid
或者
pkill -9 ruby
或者
lsof -wni tcp:3000
kill -9 pid
跑: fuser -k -n tcp 3000
这将终止在默认端口 3000 上运行的进程。
只需打开那个 C:/Sites/folder/Pids/Server.pids 并复制那个 4 位数的值。那个 4 位数的值只不过是一个 PID,你需要杀死它来停止已经运行的进程。
然后停止进程使用下面的命令
kill -9 <pid>
once that already running process get stopped then hit
rails s
to start the rails server
我刚刚遇到这个问题并尝试将其设置为不同的端口,但我唯一需要做的就是删除我的[app_directory]/tmp/pids/server.pid
,一切都很好。
On Ubuntu :-
sudo kill -9 $(lsof -i :3000 -t)
where,
3000 is port number
Works for me....
For older versions :-
rails s -p 3000 -P tmp/pids/server2.pid
my docker container has no lsof
. Try sudo kill -9 $(netstat -ano -p tcp | grep :3000 | awk '{ print $7 }' | grep -Po '^[\d]+')