OC

Knowledge OS
主帖 15 条回复

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

snippets snippets · 2014年06月12日 · 阅读 8 · 更新于 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 条
#1
damon
2014年06月12日

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

#3
snippets
2014年06月12日

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

#4
pinxue
2014年06月12日

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

#9
海豚加加
2014年06月12日

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

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

#11
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 @海豚加加 等的指点。

#14
pinxue
2014年06月12日

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

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