无法停止rails服务器
我是新来的铁轨,我使用的Ubuntu机器和rubymine IDE。 问题是我无法停止rails服务器。 我试图通过杀死rails进程来停止服务器。 但是,当我运行pgrep -l rails
,找不到这样的进程。 所以,我只能杀死ruby进程,但是服务器不会停止。
我试图./script/server stop
(因为我开始通过运行./script/server start
),但是,这并没有工作。 search一下,find一些stackoverflowpost,我试图改变localhost端口的侦听端口,但没有成功。 有人可以帮忙吗?
您可以使用其他端口,如下所示:
rails server -p 3001
通常在您的terminal中,您可以尝试Ctrl + C
来closures服务器。
另一种杀死Ruby on Rails默认服务器(即WEBrick
)的方法是:
kill -INT $(cat tmp/pids/server.pid)
在你的terminal上找出进程的PID:
$ lsof -wni tcp:3000
然后,使用PID列中的数字来终止进程:
例如:
$ kill -9 PID
我发现的其他一些答案是:
要在运行时停止导航服务器,请按:
CTRL-C CTRL-Z
你将控制回bash
。 然后input(不含$
):
$ fg
这将回到过程中,然后退出Rails s
正确。
这有点烦人,但是这肯定会跳过手动杀死进程。 这不是太糟糕,这是我所能想到的最好的。
更新回答:
您可以使用killall -9 rails
来杀死名称中带有“ rails
”的所有正在运行的应用程序。
killall -9 rails
你可以用下面的方法使用grep命令,
ps aux | grep rails
接着
kill -9 {process_id}
pkill -9 rails
杀死所有导轨的过程
更新了答案
ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9
这将杀死任何正在运行的rails进程。 用别的东西replace“rails”来杀死其他进程。
在我的MAC上, killall -9 rails
不起作用。 但是killall -9 ruby
。
我一般使用:
killall ruby
要么
pkill -9 ruby
这将杀死所有像rails server
, rails console
等运行的ruby相关的进程。
以下是杀死服务器进程的步骤:
1. lsof -i tcp:3000
2. kill -9 1234
其中1234
是进程的PID:localhost:3000在步骤1中显示。
要么
删除Rails.root/tmp/pids/
下的文件(server.pid),然后重新启动服务器。
要么
使用命令在另一个端口中打开应用程序:
rails s -p 3001
使用ctrl+c
closures您的Webrick服务器。
不幸的是,如果它不工作,然后强行closuresterminal,并重新启动它。
另一个诀窍是
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
从tmp / pids文件夹中删除server.pid。 在我的情况下,错误是:服务器已经运行。 检查/home/sbhatta/myapp/tmp/pids/server.pid。
所以,我删除了server.pid
rm /home/sbhatta/myapp/tmp/pids/server.pid
然后运行rails s
Ctrl-Z通常应该做的伎俩。
我用斯里兰卡build议使用killall -9 rails
,它没有工作。 我调整了命令killall -9 ruby
和服务器立即closures。
Tl; dr: killall -9 ruby
当rails服务器没有启动,意味着它已经在运行,那么你可以开始使用新的端口,例如。
rails s -p 3001
或者它启动和停止在这种情况下,你想删除在rails目录结构中的temp文件夹启动rails服务器。
我已经注意到在Windows(我使用10,但不知道如果相同的oler)。 如果您使用cmd.exe和ctrl + c raisl服务器正确停止。
但是,如果您使用Git Bash,则不会。 它说它有,但是当你看tmp pids时,它仍然存在。
也许与Git bash的错误?
检查/tmp/tmp/server.pid
里面有个pid。
通常我会在cmd中“kill -9 THE_PID”
这个问题迟到了。 这是我的2美分。 当我无法访问服务器时,我做了一个停止服务器的耙子任务。 我只在Mac上testing过。
有了这个,你可以简单地将它添加到你的项目,然后运行rake命令。
干得好:
要点链接: – 最新版本将在这里。 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`
此外,请确保您在用于启动服务器的相同terminal(选项卡)中执行命令Cntrl + C.
在我的情况下,我有2个标签,但我忘了停止正确的选项卡的服务器,我想知道为什么Cntrl + C不工作。
一个超级简单的方法将是
gem install shutup
然后进入您的rails项目的当前文件夹并运行
shutup
#这将杀死当前正在运行的Rails进程
你可以使用命令'shutup'每次你想要的
DICLAIMER:我是这个gem的创造者
注意:如果您正在使用rvm全局安装gem
rvm @global do gem install shutup
1.简单地从rails app目录中删除pid文件
Rails_app -> tmp -> pids -> pid file
删除文件并运行
rails start
2.对于Rails 5.0及以上版本,您可以使用此命令
rails restart
步骤1:find消耗3000端口的项目。
lsof -i:3000
第2步:find名为的进程
对于Mac
ruby TCP localhost:hbci (LISTEN)
对于Ubuntu
ruby TCP *:3000 (LISTEN)
第3步:find进程的PID并杀死它。
kill -9 PID