linux查看端口被哪个进程占用:三种实用查询方法
linux查看端口被哪个进程占用,主流可直接落地的方法为lsof精准单端口查询、netstat批量端口检索、ss高效端口扫描,三种命令适配不同系统版本与查询场景,均能输出进程PID、程序名称、运行用户等核心信息,其中ss命令适配新版Linux系统,查询速度明显优于netstat,lsof命令单端口查询结果最简洁直观,netstat在老旧系统中兼容性更强。
linux查看端口被哪个进程占用之lsof命令
lsof是专门用于查询文件与端口占用关系的工具,你执行lsof-i:端口号即可直接查询指定端口的占用进程,例如lsof-i:8080可查看8080端口的占用情况,输出内容包含COMMAND进程名、PID进程编号、USER运行用户、端口协议等关键数据。该命令无需筛选过滤,结果针对性极强,适合精准排查单个端口占用问题。若执行命令后无任何输出,代表当前端口未被任何进程占用。
部分精简版Linux系统默认未预装lsof工具,你可通过yuminstalllsof或aptinstalllsof快速安装,安装完成后即可正常使用。该命令支持精准区分TCP、UDP协议端口,可通过lsof-itcp:端口号、lsof-iudp:端口号单独查询对应协议的端口占用,适配精细化排查场景。
linux查看端口被哪个进程占用之netstat命令
netstat是传统网络状态查询工具,适配CentOS7及以下老旧Linux系统,核心查询指令为netstat-tunlp|grep端口号,参数中t代表TCP端口、u代表UDP端口、n表示以数字形式显示端口、l仅展示监听状态端口、p显示对应进程信息。执行指令后,末尾字段会清晰标注占用端口的进程名称与PID,可直接用于定位异常占用进程。
netstat命令存在明显性能短板,在服务器端口数量较多、进程负载较高的场景下,查询响应速度较慢,且部分新版Linux系统已默认移除该工具,需手动安装net-tools依赖包才可使用。该命令优势在于可批量查看所有监听端口及对应进程,适合全局排查端口占用异常。
linux查看端口被哪个进程占用之ss命令
ss是Linux官方主推的netstat替代工具,集成于iproute2工具包,CentOS8、Ubuntu20.04及以上新版系统均默认预装,无需额外安装。核心查询指令为ss-tulnp|grep端口号,参数功能与netstat基本一致,查询速率大幅提升,高负载服务器中优势尤为明显。
ss命令输出格式简洁规范,会直接展示端口监听状态、进程PID与程序名,结果可读性较强。该工具仅支持查询处于监听状态的端口,无法查询已建立连接的临时端口占用,场景适配存在一定局限,适合日常常规端口占用排查工作。
| 查询命令 | 适配系统 | 查询速度 | 核心优势 | 场景短板 |
|---|---|---|---|---|
| lsof | 全版本Linux | 较快 | 单端口结果精准、无需过滤 | 需手动安装、无法批量查端口 |
| netstat | 老旧Linux系统 | 较慢 | 兼容性强、支持全局批量查询 | 新版系统多未预装、性能偏弱 |
| ss | 新版Linux系统 | 最快 | 默认预装、高负载查询稳定 | 不支持临时连接端口查询 |
查到进程PID后,可核验进程详细信息。
你获取端口对应的进程PID后,可执行ps-ef|grepPID,查看进程的启动路径、执行用户、启动参数等完整信息,以此判断进程是否为合法业务进程,排查恶意进程或残留进程占用端口的问题。若需释放端口,可在确认进程无用后,执行kill-9PID强制终止进程,释放被占用端口。
该类端口查询命令的适用边界是仅能查询本地服务器端口占用情况,无法查询远程服务器端口占用状态,且普通用户执行部分命令可能缺失进程权限信息,切换root用户执行可获取完整查询结果。
CentOS8及以上系统默认废弃netstat工具,优先使用ss与lsof组合查询,可覆盖绝大多数端口排查场景,兼顾查询效率与结果精准度。
