温馨提示×

怎样分割linux大日志文件

小樊
43
2026-09-29 14:08:44
栏目: 智能运维

在 Linux 下分割大日志文件,常见场景和对应方法如下:


一、按文件大小分割(最常用)

1. split 命令

split -b 100M access.log access_part_
  • -b 100M:每个文件 100MB
  • 生成文件:access_part_aa、access_part_ab …

按行数分割:

split -l 100000 access.log access_part_

自定义后缀长度:

split -b 200M -d access.log log_

生成:log_00、log_01


二、按时间 / 日期分割(日志常用)

2. logrotate(推荐生产环境)

配置文件示例:

/var/log/access.log {
    size 100M
    rotate 5
    compress
    missingok
    notifempty
}

手动执行:

logrotate -f /etc/logrotate.d/access

三、按时间段内容分割

3. 按日期切割(如 nginx 日志)

awk '/2025-01-01/ {print > "log_2025-01-01.log"}' access.log

或按小时:

awk '{print > "log_" substr($4,2,11) ".log"}' access.log

四、实时滚动分割

4. tail + split

tail -F access.log | split -b 50M - live_part_

五、压缩分割(节省空间)

split -b 100M access.log | gzip > access.gz

或:

split -b 100M access.log access_part_ && gzip access_part_*

六、合并还原

cat access_part_* > access.log

推荐总结

场景 方法
临时分析 split
生产日志 logrotate
按内容 awk
实时 tail + split

如果你能说明日志格式 / 使用场景(nginx、java、系统日志等),我可以给你更精确的命令。

0 踩