无法停止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 serverrails 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+cclosures您的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