如何查看Linux网络端口占用情况的命令和方法?

在Linux系统运维中,网络端口占用情况的排查是常见任务,无论是解决服务冲突、验证服务启动状态,还是进行安全审计,都需要准确掌握端口的使用情况,本文将详细介绍Linux下查看网络端口占用的常用方法,包括命令参数、使用示例及适用场景。

linux如何查看网络端口占用情况

使用netstat命令查看端口占用

netstat是传统的网络工具,虽然在新版Linux中逐渐被ss替代,但仍广泛使用,尤其在需要兼容旧系统时,通过netstat可以查看TCP、UDP端口的监听状态、连接情况及占用进程。

常用参数组合:

  • -t:显示TCP端口
  • -u:显示UDP端口
  • -l:仅显示监听端口(LISTEN状态)
  • -n:以数字形式显示地址和端口(不解析域名和服务名)
  • -p:显示占用端口的进程ID(PID)和名称

示例命令:

netstat -tulnp  

执行后输出类似内容:

Active Internet connections (only servers)  
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:*                           9012/dhclient  

列说明Proto(协议)、Local Address(本地IP:端口)、State(连接状态,如LISTEN表示监听)、PID/Program name(进程ID及名称)。

进阶用法:

查看指定端口占用(如80端口):

netstat -tulnp | grep :80  

使用ss命令查看端口占用

ssiproute2工具包的一部分,相比netstatss在处理大量网络连接时速度更快,输出信息更简洁,是当前Linux系统推荐使用的工具。

常用参数组合:

  • -t:TCP端口
  • -u:UDP端口
  • -l:仅显示监听端口
  • -n:数字形式显示
  • -p:显示进程信息
  • -a:显示所有端口(包括非监听)

示例命令:

ss -tulnp  

输出示例:

linux如何查看网络端口占用情况

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=32))  
UNCONN     0      0      192.168.1.100:68                0.0.0.0:*    users:(("dhclient",pid=9012,fd=5))  

列说明State(连接状态)、Local Address:Port(本地IP:端口)、users(进程信息)。

进阶用法:

查看所有TCP连接(包括已连接、监听等):

ss -t -a  

使用lsof命令查看端口占用

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

常用参数:

  • -i:指定网络条件,如-i :端口号查看指定端口
  • -P:不显示端口号对应的服务名
  • -n:不解析IP地址为域名

示例命令:

查看3306端口占用:

lsof -i :3306  

输出示例:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
mysqld   5678 mysql    3u  IPv4   12345      0t0  TCP localhost:3306 (LISTEN)  

列说明COMMAND(进程名)、PID(进程ID)、NAME(端口及状态)。

linux如何查看网络端口占用情况

进阶用法:

查看所有网络连接:

lsof -i  

工具对比与选择

以下为三种工具的简要对比:

工具 优点 缺点 适用场景
netstat 兼容旧系统,参数直观 速度慢,逐渐被弃用 需兼容旧版Linux的系统
ss 速度快,信息简洁,功能全面 部分旧系统可能未预装 新版Linux系统(推荐)
lsof 可通过文件描述符精准定位端口 输出信息相对复杂,需过滤 需查看端口详细进程信息时

注意事项

  1. 权限问题:查看其他用户的进程需使用sudo,如sudo ss -tulnp
  2. 端口范围:Linux端口范围为0-65535,其中0-1023为特权端口,需root权限使用。
  3. 状态区分LISTEN表示服务正在监听,ESTABLISHED表示已建立连接,TIME_WAIT表示连接关闭等待中。

相关问答FAQs

Q1:如何快速找到占用特定端口的进程?
A:使用sslsof结合grep过滤端口,

# 查看8080端口占用
ss -tulnp | grep :8080
# 或
lsof -i :8080

输出结果会直接显示占用该端口的进程ID、名称及详细信息。

Q2:为什么执行netstat命令提示“command not found”?
A:部分Linux系统(如Ubuntu 20.04+)默认未安装netstat,需手动安装:

  • Ubuntu/Debian:sudo apt install net-tools
  • CentOS/RHEL:sudo yum install net-tools
    安装后即可使用netstat命令。

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

(0)
酷番叔酷番叔
上一篇 2025年8月22日 00:28
下一篇 2025年8月22日 00:43

相关推荐

  • Linux如何配置FTP服务?

    在Linux系统中配置FTP服务通常使用vsftpd(Very Secure FTP Daemon),这是一款轻量级、安全且稳定的FTP服务器软件,以下是详细的配置步骤,涵盖安装、配置用户权限、防火墙设置及服务管理等内容,安装vsftpd首先根据Linux发行版选择合适的包管理器安装vsftpd,基于Debia……

    2025年9月30日
    4200
  • Linux线程如何判断是否已退出?

    在Linux系统中,线程是进程内的执行单元,线程退出的判断是线程管理的重要环节,涉及资源释放、状态同步等多方面问题,线程退出的方式多样,对应的判断方法也需根据场景选择,本文将详细分析线程退出的常见方式及判断机制,线程退出的常见方式线程退出可分为主动退出和被动退出两类,主动退出是线程自身决定终止执行,被动退出则是……

    2025年8月23日
    4500
  • linux如何使用sql注入

    nux 本身不直接支持 SQL 注入,SQL 注入是针对数据库的攻击方式,与操作系统无关。

    2025年8月18日
    7200
  • Linux下如何查看笔记本网卡是否为百兆速率?

    在Linux系统中查看笔记本网卡是否为百兆(100Mbps)速率,可通过多种方法实现,这些方法分别基于命令行工具、系统文件或硬件信息查询,适用于不同场景和系统环境,以下是详细操作步骤及注意事项,使用ethtool命令(推荐)ethtool是Linux下查看网卡详细信息的常用工具,可直观显示网卡的当前速率、双工模……

    2025年9月29日
    3800
  • linux 如何消耗内存

    Linux 中,可通过运行大型程序、加载大量数据到内存、创建大数组等方式消耗

    2025年8月18日
    5100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信