Linux上 log日志很大,如何获取部分内容?

lumen.log日志非常大时,直接打开或传输会消耗大量 I/O 和 CPU 资源,影响服务器性能。以下是几种对服务器影响最小的获取部分内容的方法:

1. 查看最后 N 行(最常用,查看最新报错)

如果你只是想看最新的报错信息,不要打开整个文件,使用 tail

  • 查看最后 100 行:

    复制代码
    tail -n 100 lumen.log
  • 实时监控最新日志(类似 tail -f):

    复制代码
    tail -f lumen.log

2. 提取指定时间段的日志(精准获取)

如果错误发生在特定时间(比如你之前提到的 08:09:27),可以用 sedgrep截取那一段时间的日志,而不是加载整个文件。

  • 提取 08:09:00 到 08:10:00 之间的日志:

    复制代码
    sed -n '/2026-02-26 08:09:/,/2026-02-26 08:10:/p' lumen.log > /tmp/part.log

    解释:只把匹配到的内容写入 /tmp/part.log,这样不会占用太多内存。

  • 使用 grep过滤特定关键词(如你之前的报错):

    复制代码
    grep "queryOrderHelper" lumen.log > /tmp/error_part.log

3. 分割大文件(如果必须下载)

如果日志实在太大,且你需要保留格式下载到本地分析,可以使用 split命令将其切成小文件。

  • 每 50MB 切分一个文件:

    复制代码
    split -b 50M lumen.log part_

    这会在当前目录生成 part_aa, part_ab等小文件,你可以只下载其中一个。

如:

4. 打包压缩(减少传输量)

在传输前先压缩,能显著减少 I/O 读写和网络传输时间。

  • 仅打包今天的日志并压缩:

    复制代码
    # 假设今天是2026-02-26
    grep "2026-02-26" lumen.log | gzip > /tmp/today.log.gz

💡 性能优化建议 (Performance Tips)

  1. 避免用 vimcat打开大文件:这会一次性加载文件到内存,可能导致服务器卡顿甚至 OOM(内存溢出)。

  2. 使用管道 | :像上面的 sedgrep命令,通过管道处理,通常是流式读取,对内存占用极小。

  3. 输出到 /tmp :处理完的文件放在 /tmp目录下,方便下载,且重启后通常会自动清理,不占业务磁盘空间。

相关推荐
不吃土豆的马铃薯5 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
疯狂成瘾者5 小时前
常见的 Linux 版本
linux·运维·服务器
szxinmai主板定制专家5 小时前
基于ZYNQ MPSOC图像采集与压缩系统总体设计方案
linux·arm开发·人工智能·嵌入式硬件·fpga开发
liulilittle5 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
tianrun12346 小时前
Ubuntu 24.04 安装 Fcitx5 + Rime + 搜狗词库(替代 IBus 与 Linux 搜狗输入法)
linux·运维·ubuntu
wxytxdy6 小时前
通过猜数字游戏学习Shell脚本的分支、循环编写
linux·学习
YIN_尹7 小时前
【Linux 系统编程】手撕一个简易版的shell命令行解释器
android·linux·运维
小猫咪017 小时前
Linux 软链接和硬链接详解:ln 命令背后的 inode 原理
linux
小脑斧1237 小时前
从入门到精通:Linux 进程间通信 IPC 全解析|管道、共享内存、信号量、消息队列实战
linux·运维·服务器
ABCDEEE77 小时前
3.RAG
java·linux·服务器