我是rails的新手,我使用的是ubuntu机器和rubymine IDE。问题是我无法停止rails服务器。我试图通过杀死rails进程来停止服务器。但是,当我运行pgrep -l rails
时,找不到这样的过程。所以,我只能杀死ruby进程,但是,服务器不会停止。
我尝试了./script/server stop
(因为我是通过运行./script/server start
开始的),但是,这不起作用。谷歌搜索并找到一些stackoverflow帖子,我试图改变localhost端口的监听端口,但没有成功。有人可以帮忙吗?
答案 0 :(得分:258)
您可以使用以下其他端口:
rails server -p 3001
通常在您的终端中,您可以尝试Ctrl + C
关闭服务器。
杀死Ruby on Rails默认服务器(WEBrick
)的另一种方法是:
kill -INT $(cat tmp/pids/server.pid)
在您的终端中查找过程的PID:
$ lsof -wni tcp:3000
然后,使用PID列中的数字来终止进程:
例如:
$ kill -9 PID
我找到的其他一些答案是:
要在rails服务器运行时停止它,请按:
CTRL-C
CTRL-Z
您将获得对bash
的控制权。然后输入(不带$
):
$ fg
这将重新进入流程,然后正确退出Rails s
。
这有点烦人,但这肯定会击败手动杀死进程。这不是太糟糕,这是我能想到的最好的。
您可以使用killall -9 rails
来杀死名称中包含“rails
”的所有正在运行的应用。
killall -9 rails
答案 1 :(得分:47)
你可以用以下方式使用grep命令,
ps aux | grep rails
然后
kill -9 {process_id}
答案 2 :(得分:27)
pkill -9 rails
杀死所有铁路进程
更新回答
ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9
这将终止任何正在运行的rails进程。用其他东西替换'rails'以杀死任何其他进程。
答案 3 :(得分:12)
在我的MAC上,killall -9 rails
不起作用。但killall -9 ruby
确实如此。
答案 4 :(得分:11)
以下是杀死服务器进程的步骤:
1. lsof -i tcp:3000
2. kill -9 1234
其中1234
是进程的PID:步骤1中显示localhost:3000。
OR
删除Rails.root/tmp/pids/
下的文件(server.pid)并重新启动服务器。
OR
使用命令在另一个端口打开应用程序:
rails s -p 3001
答案 5 :(得分:9)
我通常使用:
pkill -9 ruby
OR
rails server
会杀死所有与rails console
,$i
等运行的ruby相关进程。
答案 6 :(得分:4)
<强> 1。只需从rails app目录中删除pid文件
即可 didFinishLaunchingWithOptions
删除文件并运行
AppDelegate
<强> 2。对于Rails 5.0及更高版本,您可以使用此命令
Rails_app -> tmp -> pids -> pid file
答案 7 :(得分:3)
使用ctrl+c
关闭Webrick服务器。
不幸的是,如果它不起作用,请强行关闭终端并重新启动它。
另一个诀窍是
1. open your system-monitor(a gui application) on ubuntu
2. Select processes tab
3. Then look for a process having name 'ruby'
4. End that process
答案 8 :(得分:3)
从tmp / pids文件夹中删除server.pid。 就我而言,错误是:服务器已在运行。检查/home/sbhatta/myapp/tmp/pids/server.pid。
所以,我删除了server.pid
rm /home/sbhatta/myapp/tmp/pids/server.pid
然后运行rails s
答案 9 :(得分:2)
我像斯里兰卡建议的那样使用了killall -9 rails
并且没有用。我将命令调整为killall -9 ruby
,服务器立即关闭。
Tl;博士:killall -9 ruby
答案 10 :(得分:2)
第1步:找到消耗3000端口的物品。
lsof -i:3000
第2步:找到名为
的流程适用于Mac
ruby TCP localhost:hbci (LISTEN)
对于Ubuntu
ruby TCP *:3000 (LISTEN)
第3步:找到进程的PID并将其终止。
kill -9 PID
答案 11 :(得分:2)
Ctrl-Z通常可以做到这一点。
答案 12 :(得分:1)
我在Windows上注意到了(我使用10但不确定oler是否相同)。如果您使用cmd.exe和ctrl + c,则raisl服务器会正确停止。
但是,如果你使用Git Bash,它就不会。它说它有,但当你看到tmp pids时,它仍然存在。
也许是git bash的错误?
答案 13 :(得分:1)
当rails服务器没有启动时,意味着它已经在运行,那么你可以从使用新端口开始,例如。
rails s -p 3001
或在此情况下启动和停止您希望删除rails目录结构中的临时文件夹它启动rails服务器。
答案 14 :(得分:1)
就像
一样简单pkill -9 ruby
一无所有
答案 15 :(得分:0)
按Ctrl-C将会停止
如果没有检查
答案 16 :(得分:0)
在rails 6上使用
ps aux | grep rails
未返回服务器进程
我不得不做
ps aux | grep puma
找到实际过程,然后使用
杀死它 kill -9 {process_id}
答案 17 :(得分:0)
只需使用给定的位置打开文件
sudo vi /Users/user1/go/src/github.com/rails_app/rails_project/tmp/pids/server.pid
找到正在运行该进程的process_id / thread_id。
使用kill -9 84699
答案 18 :(得分:0)
如果您使用的是Rails的更新版本,并且它使用Puma作为Web服务器,则可以运行以下命令来查找卡住的Puma进程:
ps aux | grep puma
这将导致类似于以下内容的输出:
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
您想要不引用grep
的进程。在这种情况下,进程ID为85923。
然后我可以运行以下命令来终止该进程:
kill -9 85923
答案 19 :(得分:0)
请按照以下步骤操作:
答案 20 :(得分:0)
我们可以使用PORT no终止Linux上的Rails会话
fuser -k 3000/tcp
此处3000是端口号。 现在重新启动服务器,您将看到服务器处于运行状态。
答案 21 :(得分:0)
killall -9 ruby
将杀死所有的ruby进程,并且至少在我的机器上,rails服务器显示为ruby进程。 killall -9 rails
更为具体,不适用于较旧版本的Rails服务器(由于该进程名为ruby,它提供了“ rails:找不到进程”)
前一段时间遇到此问题。在使用activeadmin提交表单后,rails服务器刚刚挂起,我无法使用常规方法将其杀死(即使在ctrl + z之后它仍在后台运行)。学习者的答案有所帮助,但是此命令不需要进程ID。
答案 22 :(得分:0)
对于我的Windows 10机器, Ctrl-C + Ctrl-D 有效。
答案 23 :(得分:0)
一个超级简单的方法是
gem install shutup
然后进入rails项目的当前文件夹并运行
shutup
#这会杀死当前正在运行的Rails进程
你可以使用命令&#39; shutup&#39;每次你想要
DICLAIMER:我是这个宝石的创造者
注意:如果您使用rvm全局安装gem
rvm @global do gem install shutup
答案 24 :(得分:0)
此外,请确保在用于启动服务器的同一终端(选项卡)中执行命令Cntrl + C.
在我的情况下,我有两个选项卡,但我忘了从正确的选项卡停止服务器,我想知道为什么Cntrl + C不工作。
答案 25 :(得分:0)
这个问题迟到了。 这是我的2美分。当我无法访问服务器时,我做了一个rake任务来停止服务器。 我只在Mac上测试过。
使用此功能,您只需将其添加到项目中,然后运行rake命令。
你走了:
Gist链接:-latest版本将在这里。 https://gist.github.com/houmanka/289184ca5d8d92de0499#file-server-rake
这里有一些代码:
# Make a file under: `project_root/lib/tasks/server.rake`
# Then paste the following code
namespace :server do
desc "Stop the running server by killing the PID"
task :kill do
STDOUT.puts "Enter port number: "
post_number = STDIN.gets.strip
system "pid=$(lsof -i:#{post_number.to_i} -t); kill -TERM $pid || kill -KILL $pid"
end
end
# Then to use it in the terminal: `rake server:kill`
答案 26 :(得分:0)
检查/tmp/tmp/server.pid
里面有一个pid。
通常情况下,我会在cmd中“杀死-9 THE_PID”