服务器已在运行.检查.../tmp/pids/server.pid.退出 - 铁路

ben*_*ben 64 ruby-on-rails

..$ rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid.
Exiting
Run Code Online (Sandbox Code Playgroud)

对于rails初学者来说,最简单的解决方法是什么?

ben*_*ben 138

您可以删除该server.pid文件.

rm /your_project_path/tmp/pids/server.pid
Run Code Online (Sandbox Code Playgroud)

其他:

在OSX中尝试:

sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000
Run Code Online (Sandbox Code Playgroud)

或者在linux中:

ps -aef | grep rails

要么

lsof -wni tcp:3000
Run Code Online (Sandbox Code Playgroud)

使用杀死进程

kill -9 PID (eg,2786)
Run Code Online (Sandbox Code Playgroud)

  • 先生,我该如何防止这种情况发生?这种情况经常发生在我身上,我厌倦了手动删除 server.pid。 (2认同)

Kar*_*hit 116

Short和Crisp单行命令,将负责它.

kill -9 $(lsof -i tcp:3000 -t)
Run Code Online (Sandbox Code Playgroud)

  • 大声笑,如果你打开localhost:3000,可能想先关闭你的浏览器选项卡,否则这可能会杀死你的浏览器 (7认同)

张健健*_*张健健 12

如果您正在使用docker-compose,并且在docker-compose.yml中有: volumes: - .:/myapp 这意味着您将本地工作空间映射到容器的/ myapp文件夹.

对于卷定义,不会删除/ myapp中的任何内容.

您可以./tmp/pids/server.pid在本地计算机中删除.然后容器的/ myapp将没有此文件.

  • 您也可以在每个容器启动时自动删除该文件:`command:bash -c"rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b'0.0.0.0'"`.参考:https://github.com/docker/compose/issues/1393#issuecomment-99988242 (2认同)

mui*_*ine 9

server.pid 仅包含正在运行的服务器的进程ID.

如果你这样做:

more /your_project_path/tmp/pids/server.pid
Run Code Online (Sandbox Code Playgroud)

您将获得一个数字(例如6745),您可以使用命令kill来停止以前的服务器:

kill -9 6745
Run Code Online (Sandbox Code Playgroud)

然后您可以使用该rm命令删除该文件

rm /your_project_path/tmp/pids/server.pid
Run Code Online (Sandbox Code Playgroud)


Lor*_*isi 8

简单:

当发生这种情况时,进入项目的根文件夹并运行:

gem install shutup
shutup
Run Code Online (Sandbox Code Playgroud)

这将找到当前正在运行的进程,将其终止并清理pid文件

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

rvm @global do gem install shutup
Run Code Online (Sandbox Code Playgroud)


小智 8

运行此命令 -

那么你会得到下表——

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    2552 shyam   17u  IPv4  44599      0t0  TCP 127.0.0.1:3000 (LISTEN)
ruby    2552 shyam   18u  IPv6  44600      0t0  TCP [::1]:3000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)

运行此命令并替换上表中的 PID

例子:


web*_*ter 5

可以使用以下方法解决问题:

kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)
Run Code Online (Sandbox Code Playgroud)


Dra*_*ght 5

有时会因为您强行关闭服务器而发生这种情况,例如手动关闭操作系统/机器,以便服务器没有足够的时间登录server.pid.

一种简单的方法是手动转到tmp/pids/(控制台中显示的目录)并删除server.pid文件.然后,当您再次启动服务器时,rails server或者rails s,它会创建一个新的server.pid,您可以继续开发.


Jon*_*hez 5

首先找到 PID # - Rails 服务器卡在哪里

运行此命令以查找卡住的 PID

cat ./tmp/pids/server.pid

它会返回类似的东西65829

然后杀死那个PID =>kill 65829