我在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

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


当前回答

类型:

man lsof

然后寻找-w -n和-i

-i:网络东西 -n:加快速度 -w:切换警告

手册页上有更多的细节

其他回答

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

对于任何无意中遇到这个问题的人,如果不是在Mac上:假设你知道你的服务器在端口3000上运行,你可以通过执行以下命令一次性完成:

fuser -k 3000/tcp

但正如Toby所提到的,fuser在Mac OS中的实现相当原始,这个命令在Mac上不起作用。

一句话解决方案:

kill -9 $(ps aux | grep 'rails s' | awk {'print$2'}); rails s

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

lsof -i tcp:3000 -t

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

kill -9 pid

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

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

类型:

man lsof

然后寻找-w -n和-i

-i:网络东西 -n:加快速度 -w:切换警告

手册页上有更多的细节