OSX 8080 端口被占用该怎么解决

snippets 发布于 2014年06月12日 | 更新于 2014年06月13日
无人欣赏。

已解决:见 11 楼

问题: 8080 端口被占用

系统版本:OSX 10.9.3.

问题描述:

8080 端口被占用,但找不到什么应用占用了这个端口,故无法解绑。

重启无法解决。

系统设置中「共享」下的所有服务均处于关闭状态。

curl 测试结果如下:

$ curl -v 127.0.0.1:8080

* About to connect() to 127.0.0.1 port 8080 (#0)
*   Trying 127.0.0.1...
* Adding handle: conn: 0x7fbb51004000
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fbb51004000) send_pipe: 1, recv_pipe: 0
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.30.0
> Host: 127.0.0.1:8080
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host 127.0.0.1 left intact
curl: (52) Empty reply from server

nc 的测试结果如下:

$ nc -v -w 2 127.0.0.1 8080

found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 49382
    dst 127.0.0.1 port 5001
    rank info not available
    TCP aux info available

Connection to 127.0.0.1 port 8080 [tcp/http-alt] succeeded!

sudo lsof -i :8080 的结果为空,找不到是什么进程占用了 8080 端口。

请教该怎么解决这个问题?

共15条回复
damon 回复于 2014年06月12日

linux下是netstat -ntpl,mac 上不一样么?

pinxue 回复于 2014年06月12日

lsof -i 4TCP 看看有没有。

snippets 回复于 2014年06月12日

1楼 @damon 对相关命令及工具不熟悉,只能去摸索。mac 和 linux 还是有点不一样,比如自带的 ls 和 ctags 都有些不同。你说的那个我后面再看看,或者能大概说一下?

pinxue 回复于 2014年06月12日

另外,我估计是系统的 web sharing,去设置-共享里关了试试。

allenhsu 回复于 2014年06月12日
sudo lsof -i -n -P|grep 8080
snippets 回复于 2014年06月12日

4楼 @pinxue 共享里所有服务都是处于关闭状态的

snippets 回复于 2014年06月12日

2楼 @pinxue sudo lsof -i 4TCP | grep 8080 是空

snippets 回复于 2014年06月12日

5楼 @allenhsu 尝试了,空,ಥ_ಥ

海豚加加 回复于 2014年06月12日

可以尝试 sudo lsof -Pni4|grep LISTEN 这个试试

或者 nettop -nm tcp 人肉找8080端口

pinxue 回复于 2014年06月12日

7楼 @snippets grep http-alt 试试 :-) ,说了让你找,没让你 grep

snippets 回复于 2014年06月12日

找到了

重启后(减少已打开的各种软件和服务的带来干扰)再根据各位提供的命令尝试了一下。

nc -v -w 2 localhost 8080 看到的信息如下:

found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src ::1 port 49246
    dst ::1 port 5001
    rank info not available
    TCP aux info available

Connection to localhost port 8080 [tcp/http-alt] succeeded!

然后使用 sudo lsof -Pni4 | grep LISTEN 看到信息是:

launchd     1           root   26u  IPv4 0x8761c83dbff72f9b      0t0  TCP 127.0.0.1:631 (LISTEN)
vpnagentd  87           root    6u  IPv4 0x8761c83dc179bf9b      0t0  TCP 127.0.0.1:29754 (LISTEN)
ciscod    163           root    3u  IPv4 0x8761c83dc1644f9b      0t0  TCP 127.0.0.1:1023 (LISTEN)
acwebseca 244           root   27u  IPv4 0x8761c83dc16447b3      0t0  TCP 127.0.0.1:5003 (LISTEN)
acwebseca 244           root   29u  IPv4 0x8761c83dbff727b3      0t0  TCP 127.0.0.1:5001 (LISTEN)

看到 5001 端口在两处都出现,怀疑是这个的原因。于是用 nettop -nm tcp 来打开监控(里面没找到 8080 端口字样),然后用 nc -v -w 2 localhost 8080 来发送请求,发现在 acwebseca 的列表下会发生变化,于是确定是这个的影响。

ps aux | grep acweb 查了一下,属于 cisco 的 anyconnect ,应是有守护进程,结束对应的进程后会自动生成新的,干脆先把其删了。然后重新用 nc 测了一下,这下提示无连接了,别的程序也可以顺利地使用该端口了。至于那个程序,后面要用再装上,至少知道这个端口被谁占了……

对工具的不熟悉和命令结果不直接出现 8080 (这是为什么呢?)导致花了很多的时间,so sad。

最后谢谢 @damon @pinxue @allenhsu @海豚加加 等的指点。

pinxue 回复于 2014年06月12日

11楼 @snippets /etc/services

snippets 回复于 2014年06月12日

12楼 @pinxue 各端口的约定用途吗?

pinxue 回复于 2014年06月12日

13楼 @snippets 端口的名字而矣。唔,试了一下发现记错了,osx 的 lsof 其实也支持 -P 的……

snippets 回复于 2014年06月13日

14楼 @pinxue 哦,原来 10 楼那里你让我找 http-alt 是这个意思,get

本帖有15个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
相关帖子

[顶 楼]
|
|
[底 楼]
|
|
[首 页]