服务器测评网
我们一直在努力

如何查看电脑端口被哪个程序占用了?

在数字世界中,每一台连接到网络的电脑都像一座拥有无数房间的宏伟建筑,为了让外部服务能够准确找到并与内部特定的应用程序通信,操作系统引入了“端口”这一概念,它如同建筑上编了号的门,HTTP服务走80号门,HTTPS服务走443号门,而其他应用则使用各自的专属门牌号,有时会发生“撞门”现象——两个或多个程序试图同时使用同一个端口,或者某个程序霸占了一个端口却行为异常,掌握如何查看电脑端口占用的方法,就成了系统管理、故障排查和安全审计的必备技能,本文将详细介绍在不同主流操作系统下,如何高效、准确地查看端口占用情况。

如何查看电脑端口被哪个程序占用了?


Windows系统下的端口占用查看

Windows作为用户最广泛的操作系统之一,提供了多种方式来检查端口占用,从经典的命令行工具到现代的PowerShell,再到直观的图形化软件,总有一款适合你。

使用命令提示符(CMD)与netstat命令

netstat(Network Statistics)是一款内置于Windows的强大命令行工具,是查看网络连接和端口占用情况的传统首选。

  1. 打开命令提示符:按下Win + R键,输入cmd并回车。

  2. 执行核心命令:在命令提示符窗口中,输入以下命令并按回车:

    netstat -ano

    这个命令包含了四个关键参数,各自含义如下:

    • -a:显示所有活动的TCP连接和正在监听的TCP/UDP端口。
    • -n:以数字形式显示地址和端口号,而不是尝试解析为主机名和服务名,这使得执行速度更快,结果更直接。
    • -o:显示每个连接对应的进程ID(PID),这是定位占用端口程序的关键。
  3. 解读输出并定位进程:执行命令后,你会看到一个列表,找到你关心的“本地地址”后面的端口号,例如0.0.0:8080,记录下该行最右侧的“PID”数字。

  4. 通过PID查找进程名:使用tasklist命令配合findstr来查找这个PID对应的程序,如果PID是1234,则输入:

    tasklist | findstr "1234"

    系统会立即返回该PID所对应的映像名称(即进程名),如java.exenginx.exe,这样你就清楚地知道是哪个程序占用了该端口。

    如何查看电脑端口被哪个程序占用了?

使用PowerShell与Get-NetTCPConnection

对于追求更现代化和脚本化体验的用户,PowerShell提供了更为强大的面向对象的处理方式。

  1. 打开PowerShell:在开始菜单中搜索“PowerShell”并打开。
  2. 执行查询命令:与netstat类似,你可以使用Get-NetTCPConnection来获取TCP连接信息,若要查找特定端口(如8080)的占用情况,可以使用:
    Get-NetTCPConnection -LocalPort 8080
  3. 直接获取进程信息:PowerShell的强大之处在于管道操作,你可以将上一步的结果直接传递给Get-Process,从而一步到位获取进程的详细信息,包括名称和CPU、内存占用等:
    Get-NetTCPConnection -LocalPort 8080 | Select-Object -ExpandProperty OwningProcess | ForEach-Object { Get-Process -Id $_ }

    这条命令链会先找到占用8080端口的连接,提取其进程ID,然后获取该ID对应的所有进程详情,非常高效。


macOS与Linux系统下的端口占用查看

基于Unix内核的macOS和Linux系统,其命令行工具在底层逻辑上非常相似,通常使用lsofnetstat命令。

使用lsof命令

lsof(List Open Files)是一个功能极其丰富的命令,其核心理念是“一切皆文件”,在Unix系统中,网络连接和端口也被视为文件,因此lsof可以轻松列出它们。

  • 查看特定端口:要查看哪个进程占用了8080端口,只需执行:

    lsof -i :8080

    输出结果会清晰地显示进程名(COMMAND)、PID、用户(USER)以及连接类型等信息。

  • 查看所有监听端口:如果你想查看所有处于“监听”状态的端口(即等待外部连接的端口),可以使用:

    lsof -i -P -n | grep LISTEN

    这里,-i表示网络文件,-P阻止端口号到服务名的转换,-n阻止主机名到IP地址的转换,grep LISTEN则用于筛选出监听状态的行。

    如何查看电脑端口被哪个程序占用了?

使用netstat命令

与Windows类似,macOS和Linux也内置了netstat命令,只是参数略有不同,一个常用的组合是:

netstat -tuln
  • -t:显示TCP端口。
  • -u:显示UDP端口。
  • -l:仅显示监听状态的端口。
  • -n:以数字形式显示地址和端口。

这个命令会列出所有正在监听的TCP和UDP端口及其对应的程序,但可能不会像lsof那样直接显示PID,需要结合其他命令来定位。


常用端口查看命令对比

为了方便快速查阅,以下表格总结了不同操作系统下的核心命令:

操作系统 推荐命令 命令说明 优点
Windows netstat -ano 显示所有连接、端口及对应PID 经典通用,无需额外配置
Windows Get-NetTCPConnection PowerShell原生TCP连接查询 面向对象,易于脚本化和筛选
macOS/Linux lsof -i :端口号 查看指定端口被哪个进程占用 功能强大,信息直观,一步到位
macOS/Linux lsof -i -P -n \| grep LISTEN 查看所有监听端口 全面掌握系统网络服务状态
macOS/Linux netstat -tuln 查看所有监听的TCP/UDP端口 快速概览,参数简洁

总结与建议

无论是开发人员在本地调试Web应用,还是系统管理员排查服务器故障,亦或是普通用户担心恶意软件“开后门”,学会查看电脑端口占用都是一项极具价值的技术,在Windows平台,netstat -ano结合tasklist是基础而有效的组合,而PowerShell则提供了更现代、更灵活的解决方案,在macOS和Linux上,lsof命令无疑是首选,其强大的功能和简洁的输出深受用户喜爱。

选择哪种工具取决于你的具体需求和使用习惯,对于临时查询,简单的命令行指令最为快捷;对于持续的监控和深入分析,图形化工具或编写自动化脚本则更为合适,掌握了这些方法,你就能清晰地洞察电脑内部的数据流动,从容应对各种与端口相关的挑战,确保系统的稳定与安全。

赞(0)
未经允许不得转载:好主机测评网 » 如何查看电脑端口被哪个程序占用了?