Windows 系统下的端口查看方法
Windows 系统提供了多种便捷的工具来帮助用户查看网络连接和端口占用情况,从直观的图形界面到强大的命令行工具,可以满足不同场景的需求。
使用资源监视器
对于偏好图形化界面的用户,资源监视器是最佳选择,它以可视化的方式清晰展示了所有网络活动。
- 打开任务管理器(可以通过快捷键
Ctrl + Shift + Esc
)。 - 切换到“性能”选项卡。
- 点击底部的“打开资源监视器”链接。
- 在资源监视器窗口中,选择“网络”选项卡。
- 在“TCP 连接”和“监听端口”部分,你可以看到详细的列表,关键列包括:
- 进程:占用端口的程序名称。
- PID (Process Identifier):进程的唯一标识符。
- 本地端口:程序在本机上监听的端口号。
- 本地地址:绑定的本地IP地址。
- 远程地址和远程端口:如果是一个活动连接,这里会显示对端的IP和端口。
- 状态:连接的状态,如
Listening
(监听)、Established
(已建立)等。
使用 netstat
命令
netstat
(Network Statistics)是一个经典的命令行工具,功能强大,是系统管理员和开发者的常用利器。
打开命令提示符(CMD)或 PowerShell,输入以下命令:
netstat -ano
这个命令组合的参数含义如下:
-a
:显示所有活动的 TCP 连接和 TCP/UDP 监听端口。-n
:以数字形式显示地址和端口号,而不是尝试解析其名称,这能显著加快执行速度。-o
:显示每个连接的所属进程 ID (PID)。
执行后,你会得到一个列表,如果你发现某个端口(8080)被占用,但不知道是哪个程序,可以先记下它对应的 PID,使用以下命令来查找该 PID 对应的进程:
tasklist | findstr "<PID>"
将 <PID>
替换为你记下的实际进程 ID,即可找到具体的程序名称。
使用 PowerShell 的 Get-NetTCPConnection
PowerShell 提供了更现代、更面向对象的命令来替代 netstat
。
Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, State, OwningProcess
这个命令会以更易读的格式列出所有 TCP 连接,同样地,你可以通过 OwningProcess
属性找到 PID,然后用 Get-Process -Id <PID>
来获取完整的进程信息。
为了方便快速查阅,以下是 Windows 系统常用端口查看命令的总结:
工具/命令 | 常用参数组合 | 功能说明 |
---|---|---|
资源监视器 | (GUI) | 图形化界面,直观展示进程、PID、端口和连接状态 |
netstat |
-ano |
命令行工具,显示所有连接、端口及对应PID |
Get-NetTCPConnection |
| Select-Object ... |
PowerShell 命令,以对象形式处理,便于筛选和格式化 |
Linux 系统下的端口查看方法
在 Linux 服务器环境中,命令行是主要操作方式,Linux 提供了一套极其强大且高效的工具来查看程序链接端口。
使用 netstat
命令
与 Windows 类似,Linux 也内置了 netstat
,在现代 Linux 发行版中,它可能需要预先安装 net-tools
包。
最常用的命令组合是:
sudo netstat -tulpn
参数解释:
-t
:显示 TCP 端口。-u
:显示 UDP 端口。-l
:仅显示处于监听状态的套接字。-p
:显示监听端口的进程名和 PID。-n
:以数字形式显示端口和地址。
这个命令会直接列出所有正在监听的 TCP 和 UDP 端口,并清晰地显示对应的程序名和 PID,非常直观。
使用 ss
命令
ss
是 netstat
的现代替代品,它直接从内核获取信息,速度更快,信息也更详细,它现在是查看网络状态的首选工具。
其用法与 netstat
非常相似:
sudo ss -tulpn
ss
的参数与 netstat
大体相同,因此你可以无缝地从 netstat
迁移过来,输出结果的格式也类似,但通常更为简洁。
使用 lsof
命令
lsof
(List Open Files)是一个功能极其丰富的工具,在 Linux 中,“一切皆文件”,网络连接和端口也被视为文件。lsof
可以用来查看打开的端口。
如果你想查看特定端口(如 80)被哪个进程占用:
sudo lsof -i :80
如果你想查看所有监听端口:
sudo lsof -i -P -n | grep LISTEN
参数解释:
-i
:列出所有网络连接。-P
:不将端口号转换成服务名(不将 80 显示为 http)。-n
:不将 IP 地址解析成域名。grep LISTEN
:通过管道筛选出处于监听状态的行。
Linux 系统常用命令总结如下:
工具/命令 | 常用参数组合 | 功能说明 |
---|---|---|
netstat |
-tulpn |
传统工具,显示监听端口及对应进程信息 |
ss |
-tulpn |
现代工具,性能更高,信息更全,推荐使用 |
lsof |
-i :<port> 或 -i -P -n | grep LISTEN |
灵活强大,可查询单个端口或所有监听端口 |
macOS 系统下的端口查看方法
macOS 基于 BSD Unix,其工具集与 Linux 有很多相似之处,但也有一些细微差别。
使用 netstat
命令
macOS 的 netstat
命令同样可用,但参数和行为与 Linux 版本略有不同,要查看所有监听的 TCP 端口,可以使用:
netstat -anp tcp | grep LISTEN
这个命令会列出所有 TCP 监听端口,但默认不显示 PID,要查看 PID,可能需要结合其他命令,或者使用更直接的 lsof
。
使用 lsof
命令
在 macOS 上,lsof
是最直接、最方便的查看程序链接端口号的工具,其用法与在 Linux 上几乎完全相同。
查看特定端口占用:
sudo lsof -i :22
查看所有监听端口:
sudo lsof -i -P -n | grep LISTEN
输出结果会清晰地列出进程名(COMMAND)、PID、用户(USER)、端口类型等所有必要信息。
组合使用 lsof
和 ps
有时,你可能只想得到干净的进程名,可以先通过 lsof
获取 PID,再用 ps
命令查询:
# 假设我们知道端口 8080 的 PID 是 12345 ps -p 12345 -o comm=
这个命令会只输出进程名,非常适合在脚本中使用。
掌握在不同操作系统上查看程序链接端口和查看程序链接端口号的方法,是每个技术人员必备的技能,它不仅能帮助我们快速定位和解决网络相关的问题,还能加深我们对计算机系统工作原理的理解,无论是通过 Windows 友好的图形界面,还是利用 Linux/macOS 强大的命令行工具,都能让我们对系统的网络活动了如指掌,从而更高效、更安全地管理我们的服务和应用。