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用户组修改如何安全操作?

    修改用户组的基础命令usermod 命令(修改用户的主组或附加组)修改用户的主组(Primary Group)主组是用户创建文件时的默认所属组,命令格式:sudo usermod -g <新主组名> <用户名>示例:将用户 alice 的主组改为 developerssudo userm……

    2025年7月10日
    10100
  • linux7如何配置vnc

    Linux7 上配置 VNC,需先安装 VNC 服务器软件,然后进行相关设置如端口、密码等,

    2025年8月19日
    9100
  • Linux系统安装zip文件的具体步骤是什么?

    在Linux系统中,处理zip文件是常见的操作,但“安装zip文件”需根据文件内容类型区分具体步骤,zip文件本质是一种压缩格式,其内部可能是源代码、二进制程序、配置文件或安装脚本等,安装”需解压后根据内容进一步操作,本文将详细说明不同类型zip文件的安装方法,包括工具准备、解压步骤、编译配置及环境变量设置等……

    2025年9月28日
    5300
  • 这样洗碗真的干净吗

    环境准备:构建专业开发基础安装开发工具链终端执行:sudo apt update && sudo apt install build-essential(Debian/Ubuntu)或 sudo dnf groupinstall “Development Tools”(Fedora/CentOS……

    2025年8月1日
    10400
  • 如何进去linux的命令行

    登录Linux系统后,按Ctrl+Alt+T可打开终端进入命令

    2025年8月15日
    7900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信