命令行怎么查电脑开了哪些端口?Windows、macOS、Linux 实操指南
电脑突然变卡、命令服务连不上、行查怀疑有程序在偷偷监听网络,电脑很多人第一反应是开端口装个第三方工具。其实不用,实操系统自带的指南命令行就能查清楚本机开了哪些端口、被哪个进程占用。命令本文按 Windows、行查macOS、电脑Linux 三套系统分别给出可直接复制的开端口命令,并说明怎么看结果、实操遇到权限报错怎么办,指南以及哪些情况需要进一步确认。命令
先明确一个概念:查端口通常指查看"本机正在监听(LISTEN)的行查端口"和"已建立的连接"。监听端口意味着有程序在等待外部连接,电脑比如远程桌面、数据库、开发用的本地服务器;已建立连接则说明当前有数据在收发。两者排查思路不同,下面分开说。
Windows:netstat 和 PowerShell 两条路
最通用的还是老牌的 netstat。按 Win+R 输入 cmd,在命令提示符里执行:
netstat -ano | findstr LISTENING
参数含义:-a 显示所有连接和监听端口,-n 以数字形式显示地址和端口(不做域名解析,速度更快),-o 显示对应的进程 PID。最后一列的 PID 就是关键,拿到它再去任务管理器"详细信息"标签里对照,就能知道是哪个程序。如果任务管理器没显示 PID 列,右键表头勾选即可。
想一步到位看到进程名,可以用 PowerShell(管理员身份打开):
Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess
再配合 Get-Process -Id <PID> 就能看到程序名。Windows 10/11 也内置了 Get-NetTCPConnection,比 netstat 输出更规整,适合复制到表格里分析。若提示"无法识别命令",说明当前是旧版 PowerShell,改用 netstat 即可。
常见失败分支:执行 netstat 提示"不是内部或外部命令",多半是系统环境变量被改动,可改用完整路径 C:\Windows\System32\netstat.exe;看不到 PID 对应的进程名,通常是权限不足,换管理员终端重试。
macOS 与 Linux:lsof、ss、netstat 怎么选
macOS 和大多数 Linux 发行版都自带 lsof,查监听端口最直观:
sudo lsof -i -P -n | grep LISTEN
-i 表示网络连接,-P 不把端口号转换成服务名,-n 不解析主机名。加 sudo 是因为部分进程属于其他用户,不加会漏掉。输出里的 COMMAND 是进程名,PID 是进程号,后面跟着监听地址和端口。
Linux 上更推荐 ss,它是 netstat 的现代替代品,速度快、信息全:
ss -tulnp
其中 -t 是 TCP,-u 是 UDP,-l 只看监听,-n 不解析端口名,-p 显示进程。UDP 端口容易被忽略,但 DNS、部分游戏和流媒体服务都走 UDP,排查时建议一起看。若系统提示没有 ss 命令,说明是较老的发行版,退回 netstat -tulnp 也能用,只是输出略慢。
补充一个查单个端口的技巧:想知道 8080 被谁占了,Linux/macOS 用 lsof -i :8080,Windows 用 netstat -ano | findstr :8080。这样比翻整张表快得多。不同发行版和 macOS 版本对命令参数的支持略有差异,具体以你系统自带的手册页(man 命令)或官方文档为准。
看懂结果,并判断要不要处理
看到一堆监听端口不必紧张。系统本身就会开一些,比如 Windows 的 135、445,macOS 的 5000、7000(隔空投送相关),Linux 的 22(SSH)。真正值得留意的是这几类:一是端口绑定的地址是 0.0.0.0 而不是 127.0.0.1,意味着局域网内其他设备可能访问;二是出现了你不认识的进程名;三是数据库端口(如 3306、6379、27017)意外对外监听。
处理时别急着杀进程。先确认它属于哪个软件,是否是某个应用的必要组件。确实要关闭,Windows 可在任务管理器结束进程,Linux/macOS 用 kill <PID>,必要时加 -9 强制结束,但这可能导致数据未保存。更稳妥的做法是去对应软件的设置里关闭监听,或通过系统防火墙限制外部访问。若怀疑是恶意程序,先断网再排查,不要仅凭端口号下结论——端口本身没有好坏,关键看是哪个程序在用、绑定了哪个地址。
小结一下操作顺序:先用 netstat 或 ss 列出监听端口,再通过 PID 定位进程,接着判断绑定地址和进程来源,最后决定是放行、限制还是关闭。整套流程不需要额外安装软件,Windows 用 netstat -ano 加任务管理器,macOS 用 sudo lsof -i -P -n,Linux 用 ss -tulnp,三条命令覆盖绝大多数场景。查完记得把敏感端口收紧,尤其是暴露在公网或公共 Wi-Fi 环境下的机器。