如何查看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命令查看端口占用

ss是iproute2工具包的一部分,相比netstat,ss在处理大量网络连接时速度更快,输出信息更简洁,是当前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:使用ss或lsof结合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服务器中招?终极查杀攻略在此

    检测异常进程与网络连接,分析可疑文件修改,使用rootkit查杀工具清除木马,隔离感染主机,及时更新补丁并加固系统安全配置。

    2025年7月28日
    40300
  • Linux免密登录真的安全吗?

    图形界面自动登录(适用于Ubuntu/CentOS等桌面版)打开系统设置Ubuntu:Settings → Users → 解锁后开启Automatic LoginGNOME桌面:gnome-control-center user-accounts → 选择用户启用自动登录配置文件修改(通用方法)sudo na……

    2025年6月27日
    33800
  • 如何正确撤销用户sudo权限?

    在Linux系统中,sudo用户组(通常名为sudo或wheel)用于授予用户管理员权限,直接删除sudo组本身会破坏系统管理功能,因此绝对不建议操作,正确的做法是将特定用户从sudo组中移除,从而撤销其管理员权限,以下是详细步骤和注意事项:步骤1:确认当前sudo组名称不同Linux发行版中sudo组名称可能……

    2025年6月28日
    32900
  • 如何查linux多少位

    过命令 uname -a 查看 Linux 系统位数,输出信息

    2025年8月10日
    25700
  • 如何在Linux系统中安装Win7?

    在Linux系统下安装Windows 7双系统,需提前做好准备工作,合理规划分区,并注意引导配置,以下是详细步骤:准备工作数据备份:确保Linux系统中的重要数据已备份至外置存储设备,避免安装过程中误删数据,硬件检查:确认电脑是否支持Windows 7(较新硬件可能需手动加载驱动),预留至少50GB未分配空间……

    2025年9月30日
    23600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信