Linux端口占用查询三剑客:lsof、netstat、ss

下面我将详细解释这三种命令的用法,并比较它们的特点,让你在面试中能够对答如流。


1. lsof - “List Open Files”

在Linux中,一切皆文件,网络连接也被视为一种文件。因此 lsof 可以列出所有被进程打开的文件,包括网络端口。

最常用的命令格式:

# 查看哪个进程在监听特定端口(例如 3306)
sudo lsof -i :3306

# 查看哪个进程在使用某个特定的TCP或UDP端口
sudo lsof -i TCP:3306
sudo lsof -i UDP:53

输出结果解读:

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld   1234 mysql   12u  IPv4  24567      0t0  TCP *:mysql (LISTEN)
  • COMMAND:进程名称(mysqld

  • PID:进程ID(1234

  • USER:进程所有者(mysql

  • FD:文件描述符(12u),u 表示可读可写

  • TYPE:类型(IPv4

  • NAME:显示协议、状态(LISTEN)和端口号(mysql 或直接显示 3306

lsof 的优势:

  • 非常直接:命令意图明确,输出结果一目了然,直接告诉你“谁”在“听”或“连”。

  • 信息丰富:一次性提供了进程名、PID、用户等关键信息。


2. netstat - 传统网络统计工具

这是一个非常经典和通用的网络诊断工具,几乎在所有Linux发行版中都预装。

最常用的命令格式:

# 查看所有监听端口和对应的进程
sudo netstat -tulnp

# 只查看特定端口(例如 3306)
sudo netstat -tulnp | grep :3306

参数解释:

  • -t:TCP 协议

  • -u:UDP 协议

  • -l:仅显示监听状态的端口

  • -n:以数字形式显示地址和端口(不进行域名解析,速度更快)

  • -p:显示进程/程序名称和PID

输出结果解读:

Proto Recv-Q Send-Q Local Address Foreign Address State       PID/Program name
tcp        0      0 0.0.0.0:3306    0.0.0.0:*     LISTEN      1234/mysqld
  • 同样可以清晰地看到是 mysqld 进程(PID 1234)在监听 3306 端口。


3. ss - Socket Statistics (netstat 的现代替代品)

ss 是 netstat 的下一代工具,来自 iproute2 软件包。它更快,并且显示了更多的TCP状态信息

最常用的命令格式:

# 查看所有监听端口和对应的进程
sudo ss -tulnp

# 只查看特定端口(例如 3306)
sudo ss -tulnp sport = :3306

参数解释: (与 netstat 基本相同)

  • -t:TCP

  • -u:UDP

  • -l:Listening

  • -n:Numeric

  • -p:Processes

输出结果解读:

Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp   LISTEN 0      80     0.0.0.0:3306       0.0.0.0:*         users:(("mysqld",pid=1234,fd=12))
  • 信息与 netstat 类似,但格式稍有不同。


总结与面试回答建议

面试时,你可以这样结构清晰地回答:

“在Linux中,有多种方法可以查看端口占用情况,我常用的有三种:

  1. lsof -i :端口号

    • 这是最直观的方法。因为它基于‘一切皆文件’的理念,直接列出打开指定网络‘文件’的进程。命令简单,输出信息明确,直接显示进程名、PID和用户。

  2. netstat -tulnp | grep 端口号

    • 这是最经典通用的方法。几乎所有系统都预装,功能全面,可以查看监听、连接状态等各种网络信息。缺点是当连接数巨大时,速度可能稍慢。

  3. ss -tulnp

    • 这是现代且高效的替代品,来自 iproute2 工具集。它比 netstat 更快,并且能显示更详细的TCP内部状态(如 Recv-QSend-Q)。在很多新系统中,推荐使用 ss 来替代 netstat

  • 如果只是快速查一个特定端口,我首选 lsof,因为它最直接。

  • 如果需要分析复杂的网络连接状态,我会使用功能更强大的 ss。”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值