我在mac上,做:

rails server

我得到:

2010-12-17 12:35:15] INFO  WEBrick 1.3.1
[2010-12-17 12:35:15] INFO  ruby 1.8.7 (2010-08-16) [i686-darwin10.4.0]
[2010-12-17 12:35:15] WARN  TCPServer Error: Address already in use - bind(2)
Exiting

我知道我可以在一个新的端口上启动一个进程,但是我想终止这个进程。


当前回答

您需要使用tcp端口3000获取程序的进程id。获取进程id

lsof -i tcp:3000 -t

然后使用进程id,使用ubuntu kill命令简单地杀死进程。

kill -9 pid

或者只是运行下面提到的组合命令。它将首先获取pid,然后终止该进程。

kill -9 $(lsof -i tcp:3000 -t)

其他回答

Kill -9 $(lsof -i tcp:3000 -t)

缺省情况下,rails服务器使用3000端口。 因此,您有两个选项来运行rails服务器。 1. 您可以使用以下命令定义自定义端口,从而在其他端口上运行服务器 Rails s -p 3001 2. 或者您可以通过运行以下命令关闭所有正在运行的ruby进程 Killall -9红宝石 然后运行rails服务器

上面所有的答案都很好,但我需要一种方法来尽可能少地在终端中输入,所以我创建了一个宝石。你可以只安装一次gem,每次你想要终止Rails进程时(在当前文件夹中)运行命令'shutup'。

Gem安装关闭

然后进入rails项目的当前文件夹并运行

shutup #将终止当前运行的Rails进程

你可以在任何时候使用“关闭”命令

我是这颗宝石的创造者

注意:如果你使用rvm全局安装gem

rvm @global do gem install shutup

您需要使用tcp端口3000获取程序的进程id。获取进程id

lsof -i tcp:3000 -t

然后使用进程id,使用ubuntu kill命令简单地杀死进程。

kill -9 pid

或者只是运行下面提到的组合命令。它将首先获取pid,然后终止该进程。

kill -9 $(lsof -i tcp:3000 -t)

这是一个在windows中杀死进程的WSL脚本

PIDS=$(/mnt/c/windows/system32/cmd.exe /c netstat -ano | /mnt/c/windows/system32/cmd.exe /c findstr :$1 | awk '{print $5}')
for pid in $PIDS
do
    /mnt/c/windows/system32/cmd.exe /c wmic process where "processid=$pid" delete
done

例子

myscriptname 8080