如何查看服务器当前已打开的所有端口及对应进程?
- 云服务器
- 2025-12-20
- 4
在服务器管理中,查看已打开的端口是排查网络问题、安全审计和服务管理的基础操作,端口是服务器与外部通信的入口,不同端口对应不同的服务或应用程序,了解端口状态有助于及时发现异常访问、未授权服务或安全漏洞,以下是查看服务器打开端口的详细方法,涵盖不同操作系统和工具的使用场景。
基于Linux系统的端口查看方法
Linux系统提供了多种命令行工具来查看端口状态,最常用的包括netstat、ss和lsof。
使用netstat命令
netstat是传统的网络工具,可显示网络连接、路由表、接口统计等信息,查看打开端口的基本命令为:
netstat tulnp
- t:显示TCP端口
- u:显示UDP端口
- l:仅显示监听端口
- n:以数字形式显示地址和端口,避免DNS解析
- p:显示进程ID和进程名称(需root权限)
输出结果可能如下:
Active Internet connections (only servers) Proto RecvQ SendQ Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp6 0 0 :::80 :::* LISTEN 5678/nginx udp 0 0 0.0.0.0:68 0.0.0.0:* 9012/dhclient
Local Address列显示监听地址和端口,State为LISTEN表示端口处于监听状态,PID/Program name指明占用端口的进程。
使用ss命令
ss是netstat的替代工具,速度更快且功能更强大,推荐在Linux新版本中使用,基本命令为:
ss tulnp
参数与netstat类似,输出格式更简洁。
Netid State RecvQ SendQ Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3)) tcp LISTEN 0 511 :::80 :::* users:(("nginx",pid=5678,fd=7)) udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* users:(("dhclient",pid=9012,fd=5))
使用lsof命令
lsof(list open files)可列出打开的文件、目录和网络连接,查看端口时需结合i参数:
lsof i :端口号
查看80端口的使用情况:

输出结果会显示进程ID、用户、协议和连接状态等信息。
基于Windows系统的端口查看方法
Windows系统主要通过图形界面和命令行工具查看端口。
使用任务管理器
- 按Ctrl+Shift+Esc打开任务管理器,切换到“性能”选项卡。
- 点击“打开资源监视器”,展开“网络”部分的“TCP连接”或“UDP连接”。
- 可查看本地地址、端口、远程地址及对应的进程。
使用netstat命令
Windows的netstat命令与Linux类似,但参数略有不同,常用命令:
netstat ano
- a:显示所有连接
- n:以数字形式显示地址和端口
- o:显示进程ID(PID)
输出中Local Address列的80表示80端口开放,State为LISTENING表示监听状态,PID列指明进程ID,可通过任务管理器查看PID对应的进程名称。
使用PowerShell命令
PowerShell提供了更强大的端口查询功能,

GetNetTCPConnection State Listen | SelectObject LocalAddress, LocalPort, OwningProcess
该命令可列出所有监听状态的TCP连接及其本地地址、端口和进程ID。
端口状态分类与常见问题
端口状态可分为以下几类:
- LISTEN:端口处于监听状态,等待连接请求。
- ESTABLISHED:端口已建立连接,正在进行数据传输。
- TIME_WAIT:连接已关闭,但仍在等待确认。
- CLOSED:端口未开放或连接已关闭。
常见问题包括:
- 端口被占用:若需启动的服务提示端口被占用,可通过netstat或ss找到占用进程,终止进程或修改服务端口。
- 端口未开放:若外部无法访问服务器端口,需检查防火墙规则(如Linux的iptables或Windows的Windows Defender Firewall),确保端口已允许入站连接。
相关问答FAQs
Q1: 如何查看特定端口的占用情况?
A1: 可使用netstat tuln | grep :端口号(Linux)或netstat ano | findstr :端口号(Windows)过滤特定端口,Linux下查看80端口:netstat tuln | grep :80;Windows下:netstat ano | findstr :80。
Q2: 如何关闭不需要的监听端口?
A2: 关闭端口需先停止对应的服务或进程,若Apache占用80端口,可通过systemctl stop apache2(Linux)或服务管理器停止Apache服务;若需强制终止进程,可使用kill 9 PID(Linux)或taskkill /PID PID /F(Windows),检查防火墙规则确保端口未重新开放。
