如何查看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)
酷番叔酷番叔
上一篇 2天前
下一篇 2天前

相关推荐

  • 为什么电脑/手机卡顿?关键硬件参数解析

    在Linux系统中,查看服务器参数设置是运维管理、性能优化和故障排查的基础操作,本文将通过专业、可靠的方法,详细介绍如何获取关键硬件和系统配置信息,所有命令均经过主流Linux发行版(如Ubuntu、CentOS)验证,确保准确性,CPU信息型号与核心数lscpu # 显示架构、核心数、线程数等(推荐)cat……

    2025年7月28日
    1200
  • U盘连接电脑后为何无法访问文件?

    物理连接设备后建立网络通信链路,进行网络配置与身份验证,成功接入服务端后即可定位、传输或操作目标文件资源。

    2025年6月21日
    3000
  • Linux定时杀进程,哪种方法最安全可靠?

    方法1:cron 计划任务 + kill 命令适用场景:需要每天/小时固定时间终止进程步骤:定位进程ID(PID):使用 pgrep 精确查找进程(避免误杀):pgrep -f "进程名或关键命令"示例:pgrep -f “python3 data_processing.py”创建终止脚本……

    2025年8月8日
    1000
  • 如何检查80端口被占用?

    在Linux系统中,端口被占用可能导致服务启动失败或网络连接异常,以下是释放端口的专业方法,操作前请确保您有sudo权限:第一步:定位占用端口的进程方法1:使用 lsof 命令sudo lsof -i :端口号sudo lsof -i :80输出示例:COMMAND PID USER FD TYPE DEVIC……

    2025年7月24日
    1400
  • 为什么开发者都在用ko文件?

    Kubernetes 对象 (ko) 文件是 YAML 或 JSON 格式的配置文件,用于声明式地定义和管理集群中应用、服务等资源的目标状态,使用它们能实现版本控制、环境一致性、自动化部署和可重复性,简化复杂应用的编排与管理。

    2025年6月20日
    2800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信