本文只讲两个命令:lsof 和 netstat。
lsof -i
用默认用户(非root)登录终端,查看 88 端口占用情况,查不到,然后加 sudo 之后,就可以查到,因为 88 端口是被 root 占用的,所以普通用户查不到。
用法:
- lsof -i:端口
- lsof -i tcp:端口
1 2 3 4 5 6 7 8 9 10 11 12
| macOS:~ andy$ lsof -i:88 macOS:~ andy$ sudo lsof -i:88 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME kdc 85 root 4u IPv6 0xc411381cfd4b2b33 0t0 UDP *:kerberos kdc 85 root 5u IPv6 0xc411381cfbfc22db 0t0 TCP *:kerberos (LISTEN) kdc 85 root 6u IPv4 0xc411381cfd4b287b 0t0 UDP *:kerberos kdc 85 root 7u IPv4 0xc411381cfbfc6d9b 0t0 TCP *:kerberos (LISTEN) macOS:~ andy$ sudo lsof -i tcp:88 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME kdc 85 root 5u IPv6 0xc411381cfbfc22db 0t0 TCP *:kerberos (LISTEN) kdc 85 root 7u IPv4 0xc411381cfbfc6d9b 0t0 TCP *:kerberos (LISTEN) macOS:~ andy$
|
其中 kdc 是 Kerberos 应用,默认占用 88 端口。
netstat
在 linux 上面使用的方法通常为:netstat -nltp
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令
MacOS 上,与 linux 不一样
在Mac上执行该命令,会报如下错误:
1 2 3 4 5 6 7 8 9
| netstat: option requires an argument -- p Usage: netstat [-AaLlnW] [-f address_family | -p protocol] netstat [-gilns] [-f address_family] netstat -i | -I interface [-w wait] [-abdgRtS] netstat -s [-s] [-f address_family | -p protocol] [-w wait] netstat -i | -I interface -s [-f address_family | -p protocol] netstat -m [-m] netstat -r [-Aaln] [-f address_family] netstat -rs [-s]
|
在Mac上正确使用的方法是:即-f需要加上地址族,-p需要加上协议TCP或者UDP等
1 2 3 4 5 6 7 8
| netstat [-AaLlnW] [-f address_family | -p protocol] netstat [-gilns] [-v] [-f address_family] [-I interface] netstat -i | -I interface [-w wait] [-c queue] [-abdgqRtS] netstat -s [-s] [-f address_family | -p protocol] [-w wait] netstat -i | -I interface -s [-f address_family | -p protocol] netstat -m [-m] netstat -r [-Aaln] [-f address_family] netstat -rs [-s]
|
- 如果需要查询inet:
netstat -anvf inet
- 如果需要查询TCP:
netstat -anvp tcp
- 如果需要查询UDP:
netstat -anvp udp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| macOS:~ andy$ netstat -anvp tcp|grep 88 tcp4 0 0 127.0.0.1.3306 127.0.0.1.54532 ESTABLISHED 407026 146988 89 0 0x0102 0x0000000c tcp4 0 0 127.0.0.1.54532 127.0.0.1.3306 ESTABLISHED 406948 146988 2249 0 0x0002 0x00000008 tcp4 0 0 127.0.0.1.54313 127.0.0.1.54530 ESTABLISHED 408269 146988 1473 0 0x0102 0x0000000c tcp4 0 0 127.0.0.1.54530 127.0.0.1.54313 ESTABLISHED 408300 146988 2248 0 0x0102 0x00000008 tcp4 0 0 127.0.0.1.54527 127.0.0.1.54528 ESTABLISHED 408300 146988 1473 0 0x0102 0x00000004 tcp4 0 0 127.0.0.1.54528 127.0.0.1.54527 ESTABLISHED 408300 146988 2249 0 0x0002 0x00000000 tcp4 0 0 *.32445 *.* LISTEN 131072 131072 388 0 0x0000 0x00000006 tcp4 0 0 *.88 *.* LISTEN 131072 131072 85 0 0x0180 0x00000006 tcp6 0 0 *.88 *.* LISTEN 131072 131072 85 0 0x0180 0x00000006
macOS:~ andy$ netstat -anvp udp|grep 88 udp4 0 0 *.61588 *.* 786896 9216 37 0 0x0180 0x00000000 udp4 0 0 *.88 *.* 786896 9216 85 0 0x0180 0x00000004 udp6 0 0 *.88 *.* 786896 9216 85 0 0x0180 0x00000004
macOS:~ andy$ netstat -anvf inet|grep 88 tcp4 0 0 192.168.1.6.55088 120.198.201.211.80 ESTABLISHED 131072 131072 661 0 0x0102 0x00020000 tcp4 0 0 127.0.0.1.3306 127.0.0.1.54532 ESTABLISHED 407026 146988 89 0 0x0102 0x0000000c tcp4 0 0 127.0.0.1.54532 127.0.0.1.3306 ESTABLISHED 406948 146988 2249 0 0x0002 0x00000008 tcp4 0 0 127.0.0.1.54313 127.0.0.1.54530 ESTABLISHED 408269 146988 1473 0 0x0102 0x0000000c tcp4 0 0 127.0.0.1.54530 127.0.0.1.54313 ESTABLISHED 408300 146988 2248 0 0x0102 0x00000008 tcp4 0 0 127.0.0.1.54527 127.0.0.1.54528 ESTABLISHED 408300 146988 1473 0 0x0102 0x00000004 tcp4 0 0 127.0.0.1.54528 127.0.0.1.54527 ESTABLISHED 408300 146988 2249 0 0x0002 0x00000000 tcp4 0 0 *.32445 *.* LISTEN 131072 131072 388 0 0x0000 0x00000006 tcp4 0 0 *.88 *.* LISTEN 131072 131072 85 0 0x0180 0x00000006 udp4 0 0 *.61588 *.* 786896 9216 37 0 0x0180 0x00000000 udp4 0 0 *.88 *.* 786896 9216 85 0 0x0180 0x00000004
|