Linux如何查看端口号对应的进程?

在Linux系统中,管理和排查网络端口占用问题是日常运维和开发中的常见需求,快速定位端口号对应的进程是解决问题的关键,本文将详细介绍几种常用的Linux命令及其参数,帮助用户高效显示端口号与进程的对应关系,并对比不同工具的适用场景。

linux 如何显示端口号对应的进程

使用netstat命令显示端口对应进程

netstat是Linux系统中传统的网络连接状态查看工具,虽然其功能逐渐被ss命令替代,但在许多旧系统或特定场景下仍被广泛使用,通过netstat结合不同参数,可以灵活筛选TCP、UDP协议,以及监听、连接等状态的端口信息。

基本语法与常用参数

netstat [选项] [协议]

常用参数说明:

  • -t:显示TCP端口连接
  • -u:显示UDP端口连接
  • -n:以数字形式显示地址和端口(不解析域名和服务名,提升速度)
  • -l:仅显示监听状态的端口
  • -p:显示占用端口的进程ID(PID)和进程名称
  • -a:显示所有端口(包括监听和未监听)

示例操作

  1. 查看所有监听端口的进程信息

    netstat -tulnp

    输出示例如下:

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd           
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld         
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           9103/dhclient      

    字段解释:Proto(协议)、Local Address(本地IP和端口)、State(连接状态)、PID/Program name(进程ID及名称)。

  2. 查看指定端口的进程
    若要查询8080端口对应的进程,可结合grep过滤:

    netstat -tulnp | grep :8080

使用ss命令显示端口对应进程

ssiproute2工具包中的一员,相比netstatss的查询效率更高,尤其是在处理大量网络连接时,直接从内核获取网络信息,速度更快,已成为现代Linux系统的推荐工具。

基本语法与常用参数

ss [选项] [过滤条件]

常用参数说明:

  • -t:TCP协议
  • -u:UDP协议
  • -n:数字形式显示
  • -l:仅显示监听端口
  • -p:显示进程ID和名称
  • -a:显示所有连接

示例操作

  1. 查看所有监听端口的进程信息

    linux 如何显示端口号对应的进程

    ss -tulnp

    输出示例与netstat类似,但字段略有不同:

    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port             
    LISTEN     0      128          0.0.0.0:22                      0.0.0.0:*          users:(("sshd",pid=1234,fd=3))  
    LISTEN     0      80           127.0.0.1:3306                  0.0.0.0:*          users:(("mysqld",pid=5678,fd=31))  

    字段解释:State(连接状态)、Local Address:Port(本地IP和端口)、users(进程信息)。

  2. 按端口过滤
    查询80端口对应的进程:

    ss -tulnp | grep :80
  3. 显示所有连接(非仅监听)

    ss -tanp

使用lsof命令显示端口对应进程

lsof(list open files)用于列出系统中被打开的文件,由于Linux中一切皆文件,网络连接(端口)也被视为文件,因此可通过lsof查看端口对应的进程。

基本语法与常用参数

lsof -i:[端口号]

常用参数说明:

  • -i:指定网络地址,可接端口号、协议(如TCP、UDP)
  • -P:不解析端口号为服务名(提升速度)
  • -n:不解析IP为域名
  • -s:显示套接字信息

示例操作

  1. 查看指定端口的进程
    查询22端口(SSH服务)对应的进程:

    lsof -i:22

    输出示例:

    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     1234   root    3u  IPv4   12345      0t0  TCP *:ssh (LISTEN)
    sshd     1234   root    4u  IPv6   12346      0t0  TCP *:ssh (LISTEN)

    字段解释:COMMAND(进程名)、PID(进程ID)、NAME(监听的IP和端口)。

    linux 如何显示端口号对应的进程

  2. 查看所有监听端口

    lsof -i -P -n | grep LISTEN

三种工具对比与选择

工具 优点 缺点 适用场景
netstat 兼容性强(旧系统可用) 效率较低,查询速度慢 传统Linux系统或兼容性要求高的场景
ss 查询速度快,功能丰富 部分旧系统可能未预装 现代Linux系统(CentOS 7+、Ubuntu 16.04+等)
lsof 可查看文件级别的详细信息 语法相对复杂,默认不显示所有端口 需要结合文件描述符或更详细进程信息的场景

实际应用:端口冲突排查示例

假设启动Web服务时提示“Address already in use”,可通过以下步骤定位占用端口的进程:

  1. 使用ss查询80端口占用情况:
    ss -tulnp | grep :80
  2. 若输出显示进程ID为9999(如nginx),可进一步查看进程详情:
    ps -ef | grep 9999
  3. 若确认无需该进程,可终止进程释放端口:
    kill -9 9999

相关问答FAQs

Q1:为什么ss命令比netstat查询速度快?
A1:ss命令直接从Linux内核的netlink套接字获取网络连接信息,而netstat需要遍历/proc文件系统中的网络相关文件,数据读取效率较低,当系统存在大量网络连接时,ss的性能优势更明显,因此在现代Linux系统中推荐优先使用ss

Q2:如何只显示监听状态的TCP端口对应进程?
A2:可使用ss命令结合-t(TCP)、-l(监听)、-n(数字形式)、-p(进程)参数,具体命令为:

ss -tlnp

或使用netstat命令:

netstat -tlnp

若需过滤特定端口(如8080),可添加| grep :8080进一步筛选。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32177.html

(0)
酷番叔酷番叔
上一篇 2025年9月29日 03:49
下一篇 2025年9月29日 04:04

相关推荐

  • Linux下用rm误删文件后,如何恢复?

    Linux下使用rm命令删除文件后,默认情况下文件不会进入回收站,而是直接从文件系统中移除,但需要明确的是,rm操作并非“物理删除”,而是将文件的inode(索引节点)标记为“未使用”,并释放其占用的数据块空间,只要这些数据块未被新的数据覆盖,理论上仍可通过专业工具恢复,本文将详细介绍Linux恢复rm文件的原……

    2025年10月3日
    9900
  • Linux如何正确使用关机命令?常用命令及操作方法有哪些?

    Linux系统作为多用户、多任务的操作系统,安全、规范的关机操作至关重要,不当的关机方式可能导致数据丢失、文件系统损坏甚至硬件故障,本文将详细介绍Linux系统中常用的关机命令,包括其功能、参数、使用场景及注意事项,帮助用户根据实际需求选择合适的关机方式,Linux关机命令详解Linux系统提供了多种关机命令……

    2025年8月23日
    9900
  • Linux如何退出top命令?

    在Linux系统中,top命令是常用的实时监控工具,能够动态显示系统中运行的进程信息,包括CPU占用率、内存使用情况、进程ID等,当用户完成监控任务后,需要退出top界面返回终端,以下是详细的退出方法及相关操作说明,Linux退出top的常用方法top命令提供了多种退出方式,适用于不同场景,以下是具体操作及说明……

    2025年9月23日
    9100
  • Linux系统中如何通过命令查看PHP的详细版本信息?

    在Linux系统中,查询PHP版本是开发运维中的常见需求,无论是调试环境、依赖检查还是版本升级,都需要准确获取当前PHP的版本信息,本文将详细介绍多种在Linux中查询PHP版本的方法,涵盖命令行、网页环境、配置文件等场景,并针对不同Linux发行版提供具体操作示例,帮助用户快速定位所需信息,通过命令行直接查询……

    2025年10月2日
    9900
  • Linux内存泄漏难追踪?速查指南

    初步确认内存泄漏现象在深入诊断前,先通过基础工具确认是否存在内存泄漏:free -h 命令观察 available 列:若持续下降且 buff/cache 未同步增长,可能发生泄漏,$ free -h total used free shared buff/cache availableMem: 7.7G 5……

    2025年6月30日
    13100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信