Cannot Boot WEBrick: "WARN TCPServer Error: Address already in use "

Refer to: http://railsforum.com/viewtopic.php?id=16387

我刚刚使用Ctrl+Z 去停止服务,当再次使用rails s启动时, 发现无法启动,提示WARN  TCPServer Error: Address already in use,显然是端口被占用

在 Ubuntu的console中,使用

lsof|grep 3000

列出所有包含3000的打开文件的信息,找到ruby      2949      limei    5u     IPv4      19590      0t0        TCP *:3000 (LISTEN)
然后在console中利用kill -9 2949 杀掉该进程即可

PS:

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。

 

此外,停止服务时,使用Ctrl+C而不是Ctrl+Z,就会避免此问题的发生。

你可能感兴趣的:(server)