无法阻止rails服务器

eps*_*nes 119 ruby-on-rails

我是rails的新手,我使用的是ubuntu机器和rubymine IDE.问题是我无法停止rails服务器.我试图通过杀死rails进程来停止服务器.但是,当我跑步时pgrep -l rails,没有发现这样的过程.所以,我只能杀死ruby进程,但是,服务器不会停止.

我试过./script/server stop(因为我开始运行./script/server start),但是,这没有用.谷歌搜索并找到一些stackoverflow帖子,我试图改变localhost端口的监听端口,但没有成功.有人可以帮忙吗?

Lea*_*ner 278

您可以使用以下其他端口:

rails server -p 3001
Run Code Online (Sandbox Code Playgroud)

通常在您的终端中,您可以尝试Ctrl + C关闭服务器.

杀死Ruby on Rails默认服务器(即WEBrick)的另一种方法是:

kill -INT $(cat tmp/pids/server.pid)
Run Code Online (Sandbox Code Playgroud)

在您的终端中找出过程的PID:

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

然后,使用PID列中的数字来终止进程:

例如:

$ kill -9 PID
Run Code Online (Sandbox Code Playgroud)

我发现的其他一些答案是:

要在rails服务器运行时停止它,请按:

CTRL-C
CTRL-Z
Run Code Online (Sandbox Code Playgroud)

你会得到控制权bash.然后键入(不带$):

$ fg
Run Code Online (Sandbox Code Playgroud)

这将重新进入流程,然后退出Rails s正常.

这有点烦人,但这肯定会击败手动杀死进程.这不是太糟糕,这是我能想到的最好的.

更新的答案:

您可以使用名称中的killall -9 rails" rails" 来杀死所有正在运行的应用程序.

killall -9 rails


max*_*s ツ 47

你可以用以下方式使用grep命令,

ps aux | grep rails
Run Code Online (Sandbox Code Playgroud)

然后

kill -9 {process_id} 
Run Code Online (Sandbox Code Playgroud)


小智 27

pkill -9 rails 杀死所有铁路的过程

更新的答案

ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9

这会杀死任何正在运行的rails进程.用其他东西替换'rails'以杀死任何其他进程.


小智 13

在我的MAC上,killall -9 rails这不起作用.但是killall -9 ruby.


pun*_*t18 13

以下是杀死服务器进程的步骤:

1. lsof -i tcp:3000

2. kill -9 1234

1234进程的PID 在哪里:localhost:3000在步骤1中显示.

要么

删除文件(server.pid)Rails.root/tmp/pids/并重新启动服务器.

要么

使用命令在另一个端口打开应用程序:

rails s -p 3001


prz*_*adu 9

我一般用:

killall ruby

要么

pkill -9 ruby

这将杀死所有正在运行像所有的红宝石相关的流程rails server,rails console


Tin*_*ina 6

如果您使用的是更现代版本的 Rails 并且它使用 Puma 作为 Web 服务器,您可以运行以下命令来查找卡住的 Puma 进程:

ps aux | grep puma
Run Code Online (Sandbox Code Playgroud)

它将产生与此类似的输出:

85923 100.0  0.8  2682420 131324 s004  R+    2:54pm   3:27.92 puma 3.12.0 (tcp://0.0.0.0:3010) [my-app]
92463   0.0  0.0  2458404   1976 s008  S+    3:09pm   0:00.00 grep puma
Run Code Online (Sandbox Code Playgroud)

你想要的过程不是指的grep。在本例中,进程 ID 为 85923。

然后我可以运行以下命令来终止该进程:

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

在此输入图像描述


Ara*_*vin 5

1. 简单地从 rails app 目录中删除 pid 文件

Rails_app -> tmp -> pids -> pid file

删除文件并运行

rails start


2.对于Rails 5.0及以上,可以使用这个命令

rails restart