面试官:
在 Linux 中你如何查看某个端口是否被占用?
应聘者回答参考:
可以使用 netstat
命令配合 grep
进行查询。
- 常用方式
netstat -anp
:查看 Linux 当前所有网络连接和端口状态。netstat -anp | grep 端口号
:筛选指定端口,如果状态为LISTEN
,表示该端口正在被占用。grep
后面也可以加关键字,比如java
、redis
,快速定位某类服务。
- 常见参数说明
-a
:显示所有连接中的 Socket。-n
:不用别名显示,只用数字方式显示地址和端口号。-p
:显示进程号和进程名。
- 完整参数说明
-a
或--all
:显示所有连线中的 Socket。-A <网络类型>
或--<网络类型>
:列出指定网络类型的相关地址。-c
或--continuous
:持续列出网络状态。-C
或--cache
:显示路由器配置的缓存信息。-e
或--extend
:显示更多网络相关信息。-F
或--fib
:显示路由缓存。-g
或--groups
:显示多播功能群组成员名单。-h
或--help
:显示帮助信息。-i
或--interfaces
:显示网络接口信息表。-l
或--listening
:仅显示监听中的 Socket。-M
或--masquerade
:显示伪装的网络连接。-n
或--numeric
:直接使用数字 IP 地址和端口,而不进行域名解析。-N
或--netlink
或--symbolic
:显示网络硬件符号连接名称。-o
或--timers
:显示计时器信息。-p
或--programs
:显示正在使用 Socket 的程序 PID 和进程名。-r
或--route
:显示路由表。-s
或--statistics
:显示网络统计信息。-t
或--tcp
:显示 TCP 连接状态。-u
或--udp
:显示 UDP 连接状态。-v
或--verbose
:显示命令执行的详细过程。-V
或--version
:显示版本信息。-w
或--raw
:显示 RAW 传输协议的连接状态。-x
或--unix
:显示 UNIX 域 Socket,等效于-A unix
。--ip
或--inet
:等效于-A inet
,显示 IPv4 相关连接。
- 总结
常用的就是netstat -anp | grep 端口号
,快速定位端口是否被占用以及对应进程。
😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。