查看端口被哪个程序占用:多系统实操方案

查看端口被哪个程序占用,Windows系统优先用netstat配合tasklist或者PowerShell的Get-NetTCPConnection命令,Linux和macOS系统可以选用lsof或者ss指令,Windows家庭版系统部分旧版netstat输出缺少进程名,需要拿到PID后再单独匹配程序,Linux系统默认最小化安装环境大概率没有预装lsof工具,需要通过yum或者apt包管理器安装后才能使用,所有指令都需要在具备对应权限的终端内运行,普通用户权限下只能查看自身进程占用的端口,监听0.0.0.0的服务端口大多需要管理员或者root权限读取完整信息。

查看端口被哪个程序占用之Windows操作

你打开cmd终端,输入netstat-ano|findstr":8080",把8080替换成目标端口号,返回结果最后一列数字就是PID,PID是进程标识符,用来唯一标记系统里正在运行的程序。拿到PID之后,输入tasklist|findstr"PID数值",就能直接看到这个PID对应的程序名称。Windows101709及之后的版本,PowerShell里的Get-NetTCPConnection-LocalPort8080指令可以直接输出PID,省去一步筛选,再搭配Get-Process-IdPID值,一次性展示进程路径、占用内存等附加信息。

不要直接在普通权限cmd执行查询服务器端口,会出现有返回结果但进程PID列显示空白的情况。

Windows自带资源监视器也支持图形化查看,按下Ctrl+Shift+Esc打开任务管理器,切换到性能标签页,点击底部资源监视器,在网络板块的侦听端口列表里,直接按端口排序,同步显示进程名称、PID和协议类型,适合不熟悉命令行的使用者,图形界面的刷新速度比命令行慢,高频变动的端口信息存在短暂延迟。

查看端口被哪个程序占用之Linux、macOS操作

系统指令前置条件输出内容
Linuxss-tulnp|grep端口号ss随iproute2预装,无需额外安装协议、监听地址、PID、程序名
Linux/macOSlsof-i:端口号Linux最小化系统需要安装lsof进程用户、PID、程序路径

macOS系统自带lsof工具,终端直接运行lsof-i:3306就能查看3306端口对应的程序,macOS的ss指令版本输出格式和Linux存在差异,部分发行版本不支持直接显示PID,优先选择lsof。CentOS系统执行yuminstalllsof,Debian和Ubuntu系列执行aptinstalllsof完成工具安装,安装完成之后,lsof需要root权限才能读取全部监听端口,普通用户只能读取自己启动的进程端口记录。

ss指令是现在Linux系统更推荐的查询方式,读取端口信息的资源开销更低,面对上千条网络连接时响应速度优于lsof,ss的参数-tulnp分别代表TCP、UDP、监听状态、不解析主机名、显示进程信息,减少DNS解析带来的等待时间。

该方法的适用边界是,NAT网关、防火墙转发的端口,查询到的进程是转发服务本身,不是外网访问对应的后端业务程序,这类场景需要在后端业务服务器上执行查询。

识别到占用端口的程序之后,如果你需要释放端口,Windows里用taskkill/F/PID进程号强制结束进程,Linux和macOS用kill-9PID,强制结束进程会中断正在传输的业务数据,保存数据的服务进程优先使用不带-9参数的kill优雅关闭。

你可以把查询指令封装成简短脚本,固定查询常用端口,反复排查开发环境端口冲突时,能减少重复输入指令的工作量,脚本运行逻辑只保留端口匹配、PID输出两步,不需要增加自动杀进程逻辑,避免误停业务服务。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于查看端口被哪个程序占用的文章欢迎访问:百科