• 日志大文件拆分


    前言

    生产环境没设置好日志文件大小的最大值,导致日志文件过大,普通编辑器根本没法打开,要排查日志改怎么办,拆分日志大文件!

    如何拆分

    split命令专门用来将一个大文件分割成很多个小文件,我把split命令的选项做一个简要说明

    选项含义
    -b分割后的文档大小,单位是byte
    -C分割后的文档,单行最大byte数
    -d使用数字作为后缀,同时使用-a length指定后缀长度
    -l分割后文档的行数
    按照行数拆分

    假设文件test.txt有n多行,每2行拆分为一个文件,使用-l参数即可:

    1. $ split -l 2 test.txt
    2. $ ls -al
    3. -rw-r--r-- 1 root root 32 Aug 31 16:55 test.txt
    4. -rw-r--r-- 1 root root 20 Aug 31 16:55 xaa
    5. -rw-r--r-- 1 root root 12 Aug 31 16:55 xab

    仔细一看,拆分后的文件名难以描述啊。

    能不能好好命名一下呢?

    规范命名

    使用-d参数可以用数字作为新的文件后缀:

    1. $ split -l 2 test.txt -d
    2. $ ls
    3. test.txt x00 x01 x02

    还可以用-a指定后缀数字的长度(默认是2):

    1. $ split -l 2 test.txt -d -a 4
    2. $ ls
    3. test.txt x0000 x0001 x0002

    不过开头的x实在看不顺序,我们还可以指定前缀,比如指定前缀为test:

    1. $ split -l 2 test.txt -d -a 4 test
    2. $ ls
    3. test0000 test0001 test0002 test.txt

    而且你还可以从指定数字下标开始,使用--numeric-suffixes,例如从0004开始:

    1. $ split --numeric-suffixes=4 test.txt -a 4 -l 2
    2. test.txt x0004 x0005
    按照大小拆分

    使用-b参数来按照大小来拆分,单位为字节:

    $ split -b 10 test.txt
    

    当然还可以使用k(千字节),m(兆)。即:

    $ split -b 10k test.txt
    
    分割成指定数量文件

    使用-n参数即可,比如无论大小,行数,拆分为3个文件:

    1. $ split -n 4 test.txt
    2. $ test.txt xaa xab xac xad

    其它拆分文件方式 

    拆分日志文件的特定行,然后重定向到新的日志文件中

    sed实现分割

    实现原理就是用sed截取特定行之间的内容,然后进行重定向。

    1. sed -n '1,2000000p' test.log > test.log.1
    2. sed -n '2000001,4000000p' test.log > test.log.2
    3. sed -n '4000001,6000000p' test.log > test.log.3
    4. sed -n '6000001,8000000p' test.log > test.log.4
    5. sed -n '8000001,$p' test.log > test.log.5
     awk实现分割

    实现原理和sed差不多,因为使用awk不多,这里只举一个小例子:

    1. awk ‘{if (NR<120000) print $0}’ test.log > a.txt
    2. awk ‘{if (NR>=120000) print $0}’ test.log > b.txt

    参考文章:Linux下如何拆分大的日志文件?-腾讯云开发者社区-腾讯云

  • 相关阅读:
    【chrome扩展开发】消息通讯之onMessage消息监听
    Northstar 量化平台
    进程死锁的定义,必要条件,发生时机以及相关处理策略
    Linux知识【克隆虚拟机&配置动静态ip】
    Spring入门
    npm i把老项目升级到最新的一个奇葩问题
    服务器挂机
    SOLIDWORKS --电磁仿真篇
    15设计模式-行为型模式-观察者模式
    正则匹配手机、邮箱、密码
  • 原文地址:https://blog.csdn.net/w2393040183/article/details/132825534