linux下查看端口的命令是什么意思
linux下查看端口的命令是什么意思详细介绍
在 Linux 系统中,查看端口相关信息的命令主要用于监控网络连接、端口占用情况及进程关联等。以下是常用命令及其含义、用法和输出解析:
一、常用查看端口的命令
1.
netstat(Network Statistics)
功能:显示网络连接、路由表、网络接口统计等信息,常用于查看端口占用和网络连接状态。
常用选项:
-a(all):显示所有连接(包括监听和非监听状态)。-t(tcp):仅显示 TCP 连接。-u(udp):仅显示 UDP 连接。-l(listening):仅显示处于监听状态的端口(常用!)。-n(numeric):用数字形式显示 IP 和端口(而非域名 / 服务名)。-p(program):显示占用端口的进程 PID 和名称。-i:显示网络接口信息。-r:显示路由表。
示例命令:
bash
:80
输出字段解析(以 netstat -tulnlp 为例):
plaintext
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 987/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 1234/dhclient
Proto:协议(TCP/UDP)。Recv-Q:接收队列中未被处理的数据(正常为 0)。Send-Q:发送队列中未被发送的数据(正常为 0)。Local Address:本地 IP 和端口(格式:IP:端口,0.0.0.0表示监听所有 IP)。Foreign Address:远程 IP 和端口(*:*表示未连接)。State:连接状态(如LISTEN监听、ESTABLISHED已建立连接)。PID/Program name:占用端口的进程 PID 和程序名。
2.
lsof(List Open Files)
功能:列出系统中所有打开的文件和网络连接(Linux 将网络端口视为文件),可用于查看端口占用的进程。
常用选项:
-i:显示网络相关的打开文件(端口)。-i:port:指定端口(如-i:80查看 80 端口)。-P:不解析端口号为服务名(如 80 不显示为http)。-n:不解析 IP 为域名。
示例命令:
bash
输出字段解析:
plaintext
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 987 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
COMMAND:进程名。PID:进程 ID。USER:进程所属用户。FD:文件描述符(3u中u表示网络连接)。TYPE:文件类型(如IPv4/IPv6网络连接)。NAME:网络连接的详细信息(*:22表示监听 22 端口)。
3.
ss(Socket Statistics)
功能:新一代网络统计工具,比 netstat 更高效,用于查看 socket 连接和端口状态。
常用选项:
-t:TCP 连接。-u:UDP 连接。-l:监听状态的端口。-n:数字形式显示 IP 和端口。-p:显示进程信息。-a:所有连接(包括监听和非监听)。
示例命令:
bash
ss
ss :443
输出字段与 netstat 类似,但更简洁,性能更好,推荐优先使用。
二、命令对比与选择
| 命令 | 优势 | 劣势 / 注意事项 |
|---|---|---|
netstat |
经典工具,兼容性强(需安装 net-tools 包) |
输出冗余,性能略低于 ss |
lsof |
直接关联进程和端口,适合精准查找端口占用 | 需权限(普通用户可能无法查看所有进程) |
ss |
高效、简洁,现代 Linux 内置(无需额外安装) | 部分旧系统可能不支持(如 CentOS 6 及以下) |
三、常见场景
- 查看所有监听端口:bash
- 查看指定端口是否被占用:bash
:8080 - 终止占用端口的进程(需 root 权限):bash
四、注意事项
- 权限问题:普通用户只能查看自己的进程,查看所有进程需
sudo。 - 命令缺失:若
netstat/lsof不可用,需安装对应包(如net-tools、lsof)。 - IPv6 端口:端口号后加
%可区分 IPv6 接口(如[::1]:80%lo表示本地回环接口的 80 端口)。
通过这些命令,可清晰了解 Linux 系统中端口的占用情况、连接状态及对应进程,帮助排查网络服务异常、端口冲突等问题。