Kill Rails 服务器的实例教程

197 阅读1分钟

简单回答

如果你的本地Rails服务器运行在3000端口,你首先要发现使用的是什么PID。

$> lsof -wni tcp:3000
COMMAND   PID  USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ruby    51195 shino   10u  IPv4 0x3cd31f222cb761f      0t0  TCP 127.0.0.1:hbci (LISTEN)
ruby    51195 shino   11u  IPv6 0x3cd31f215db234f      0t0  TCP [::1]:hbci (LISTEN)

重要的一栏是 "PID"。这里的相关数字是51195。在你的电脑上,它可能是另一个数字,但对于我们的例子来说,解决方案将是

kill -9 51195

用你自己的PID替换51195,就可以了。

替代方案:使用shutup gem

如果这个问题发生得太频繁,你可以安装一个专门解决这个问题的宝石:shutup 。存储库和文档可在此获得

从头开始的教程

如果你想 "从头开始 "测试这个问题,这里有一个小教程。将使用 Ruby 3 和 Rails 7。

先决条件

$> ruby -v  
ruby 3.0.0p0 // you need at least version 3 here  
$> bundle -v  
Bundler version 2.2.11  
$> npm -v  
8.3.0 // you need at least version 7.1 here  
$> yarn -v  
1.22.10

安装新的Rails应用程序

$> mkdir kill_rails && cd kill_rails  
$/kill_rails> echo "source 'https://rubygems.org'" > Gemfile  
$/kill_rails> echo "gem 'rails', '7.0.0'" >> Gemfile  
$/kill_rails> bundle install  
$/kill_rails> bundle exec rails new . --force
$/kill_rails> bundle update  
$/kill_rails> bin/rails db:create  
$/kill_rails> bin/rails db:migrate  

通过运行来检查一切是否正常

$/kill_rails> bin/rails server
=> Booting Puma
=> Rails 7.0.0 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.5.2 (ruby 3.0.0-p0) ("Zawgyi")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 88968
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

题外话PID实际上在你启动服务器后出现的verbose logging中显示了一次。见上文。

服务器应该在本地运行而不出错,并且默认的Rails页面应用程序应该出现在http://localhost:3000

现在停止你的本地服务器。

打开Gemfile并添加

gem "shutup", group: :development

然后

$/kill_rails> bundle install

检查Rails服务器是否正常运行

然后重新启动你的本地Rails应用程序

然后

$/kill_rails> bin/rails server
=> Booting Puma
=> Rails 7.0.0 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.5.2 (ruby 3.0.0-p0) ("Zawgyi")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 89102
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

注意PID已经改变:现在的值是89102。

让你的终端窗口保持 "原样",让本地Web服务器运行。

关闭本地 Rails Web 服务器

打开另一个终端窗口。

考虑到我们刚才注意到的PID,以及本教程的第一段,我们可以输入 。

$> lsof -wni tcp:3000
COMMAND   PID  USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ruby    89102 shino   10u  IPv4 0x3cd31f229b0f9df      0t0  TCP 127.0.0.1:hbci (LISTEN)
ruby    89102 shino   11u  IPv6 0x3cd31f215db1d2f      0t0  TCP [::1]:hbci (LISTEN)

你可以注意到PID是89102,正如预期的那样

键入

kill -9 89102

并返回到第一个终端窗口。你应该看到像这样的东西。

Killed: 9
$/kill_rails>

最后一条指令显示,本地Rails服务器确实被杀死了。

再次杀死 Rails 服务器,使用 gem

$/kill_rails>  bin/rails server
=> Booting Puma
=> Rails 7.0.0 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.5.2 (ruby 3.0.0-p0) ("Zawgyi")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 90704
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

现在PID值是90704。

打开另一个终端窗口,并输入

$kill_rails> shutup
Killed process id: 90704
$kill_rails>

好了!刚才发生的事情已经很清楚了 :)

回到你的服务器正在运行的终端窗口。

Killed: 9
$/kill_rails>

希望和上面的结果一样。

尽情享受吧!