当前位置: 首页 > news >正文

ss、lsof 命令

应用场景

  • 验证服务端口监听状态,看服务是启动/停机状态。
  • 排查端口冲突。
  • 如果不知道服务监听的是哪个端口,可以用 ss 去查看。

ss 命令

典型用法

以常用的 ss -anltp 为例,条命令用于列出系统中所有处于监听(LISTEN)状态的 TCP 端口及其关联的进程信息,下面是详细解析:

  1. ss
    Socket Statistics 的缩写,用于查看套接字(Socket)统计信息,比 netstat 更快速且功能更强大。
  2. 参数说明
    • -a:显示所有 Socket(包括监听和非监听的)。
    • -n:以数字形式显示地址和端口(不解析域名和服务名称)。
    • -l:仅显示监听(LISTEN)状态的 Socket。
    • -t:仅显示 TCP 协议的 Socket。
    • -p:显示使用 Socket 的进程信息(进程名和 PID)。

输出示例:

State   Recv-Q  Send-Q  Local Address:Port   Peer Address:Port  Process
LISTEN 0       128     0.0.0.0:80          0.0.0.0:*          users:(("nginx",pid=1234,fd=6))
LISTEN 0       128     127.0.0.1:3306      0.0.0.0:*          users:(("mysqld",pid=5678,fd=10))
LISTEN 0       128     :::8080             :::*               users:(("java",pid=9012,fd=3))

Process:关联的进程名称和 PID(非 root 权限时,可能有些进程查看不到)。

更加常用的是 ss -anltp | grep <端口号>,通过增加 grep <端口号> 命令可以查看应用服务是否正常启动或停用。

Address:Port 和 Peer Address:Port 理解

Local Address:Port:代表当前主机的 ip 和端口号

  • 0.0.0.0:80:监听所有 IPv4 接口的 80 端口。0.0.0.0 代表外部 ip 可以访问到。
  • :::80:监听所有 IPv6 接口的 80 端口。
  • 127.0.0.1:3306:仅允许本地(Loopback)访问。

Peer Address:Port:代表远程主机的 ip 和端口号

  • 0.0.0.0:*:::*:一般都是这样的值,代表监听状态的 Socket 尚未与任何远程设备建立连接,因此远程地址和端口无意义。

示例:Web 服务器监听端口

  • 命令输出

    Local Address:Port   Peer Address:Port
    0.0.0.0:80          0.0.0.0:*
    
  • 解读

    • Local Address:Port:服务监听所有网络接口(0.0.0.0)的 80 端口。

    • Peer Address:Port:未建立连接,显示通配符 *

如果建立了远程连接,如何区分服务端和客户端?

  • 服务端Local Address:Port 是固定的监听端口(如 :80),Peer Address:Port 在建立连接后显示客户端地址。
  • 客户端Local Address:Port 是随机临时端口,Peer Address:Port 是服务端的地址和端口。

示例:客户端访问远程服务

  • 命令输出

    Local Address:Port    Peer Address:Port
    192.168.1.10:55678   93.184.216.34:443
    
  • 解读

    • Local Address:Port:客户端使用本地 55678 端口发起连接。
    • Peer Address:Port:连接的目标是远程 93.184.216.34443 端口(HTTPS)。

示例:SSH 连接已建立

  • 命令输出

    Local Address:Port    Peer Address:Port
    10.0.0.2:22          192.168.1.100:51234
    
  • 解读

    • Local Address:Port:SSH 服务端在 10.0.0.222 端口监听。
    • Peer Address:Port:客户端 IP 是 192.168.1.100,使用临时端口 51234 连接。

应用场景示例

  1. 验证服务端口监听状态

    ss -anltp | grep 3306  # 检查 MySQL 是否监听 3306 端口
    
  2. 排查端口冲突
    若启动服务时报错 Address already in use,可快速定位占用端口的进程。

    ss -anltp | grep 8080  # 查找 8080 端口的占用进程
    

lsof 命令

sslsof 都是 Linux 系统中用于查看网络和进程信息的工具,但它们的设计目的功能侧重点使用场景有显著区别。以下是详细对比。

设计目的:

  • ss(Socket Statistics)
    • 专为高效分析网络连接设计,替代传统的 netstat
    • 直接读取内核的套接字信息,性能极佳(尤其在连接数多时)。
    • 核心功能:查看监听端口、活动连接、TCP/UDP 状态等。
  • lsof(List Open Files)
    • 用于列出所有被进程打开的文件(包括普通文件、目录、网络套接字、设备等)。
    • 通过解析 /proc 文件系统获取信息,功能更通用但开销较大。
    • 核心功能:定位进程占用的文件或网络资源。

输出信息:

  • ss 示例输出(网络连接)

    State      Recv-Q Send-Q Local Address:Port  Peer Address:Port
    ESTAB      0      0      192.168.1.10:ssh   203.0.113.5:12345
    LISTEN     0      128    0.0.0.0:http       0.0.0.0:*
    
    • 聚焦于连接的五元组(状态、协议、本地/远程地址、端口)。
  • lsof 示例输出(进程与文件)

    COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   1234 root    6u  IPv4 12345      0t0  TCP *:http (LISTEN)
    mysqld  5678 mysql  10u  IPv6 67890      0t0  TCP [::1]:3306 (LISTEN)
    
    • 包含进程名、PID、用户、文件描述符(FD)、文件类型等详细信息。

相关文章:

  • git:The following paths are ignored by one of your
  • 单片机如何快速实现查看实时数据
  • OpenCV图像平移示例
  • RocketMQ 事务消息详解及生产使用场景
  • CQF预备知识:一、微积分 —— 1.2.2 函数f(x)的类型详解
  • 微服务架构中的 RabbitMQ:异步通信与服务解耦(二)
  • RabbitMQ可靠传输——持久性、发送方确认
  • 比斯特自动化|移动电源全自动点焊机:高效点焊助力移动电源制造
  • 随机链表的复制问题详解与代码实现
  • 高等数学-极限
  • AutoMapper .net Framework 的 Model转换扩展方法
  • 小球弹弹弹
  • 数据库5——审计及触发器
  • Linux Docker安装【再探完美版教程】
  • sqlserver数据库查询执行慢的sql、查询隔离级别、设置快照模式、查询锁表进程、锁表sql、解锁等
  • [每日一题] 3362. 零数组变换 iii
  • Excel 密码忘记了?巧用PassFab for Excel 解密帮您找回数据!
  • 二十一、面向对象底层逻辑-scope作用域接口设计
  • deepseek调用
  • 内存管理子系统学习记录
  • 长白山网站学做管理平台/谷歌seo技巧
  • 做视频网站对服务器要去/郑州seo优化外包公司
  • 网站建设会面临些什么问题/南京百度seo公司
  • 网站建设字体颜色代码/关键词搜索数据
  • 网站 公安 备案/优秀网站网页设计图片
  • 怎么做电玩网站/百度推广优化怎么做