使用shell脚本给日志文件瘦身

简介: 使用shell脚本给日志文件瘦身
一、前言

后台系统运行久了,日志文件的体积日渐增多,除了使用常用的日志框架如logback对日志进行按天打印、按大小分割等方式外,还可以使用shell命令来对大日志进行瘦身。

本篇使用sed指令来对文件进行操作,具体操作如下:

二、步骤
2.1 创建脚本文件

首先在你需要的目录创建一个shell脚本,取名clean_log.sh

touch clean_log.sh
2.2 编辑内容

对这个文件进行编辑

vim clean_log.sh

然后把下面的内容复制进去

#!/bin/bash
# 只对日志行数大于这个值的文件进行操作
limit=50000
LOG_PATH='/home/xxx/logs'
# 遍历目录里面的log日志
for file in $LOG_PATH/*.log
do
  # 统计日志文件的行数
  total_lines=$(wc -l < $file)
  if [ "$total_lines" -gt "$limit" ];then
    echo "$file"
    echo "lines: $total_lines"
    # 计算需要删除的行数,即总行数的80%
    lines_to_delete=$(echo "$total_lines * 0.8" | bc)
    # 四舍五入取整,如果lines_to_delete有小数点会无法执行
    lines=$(printf "%.0f" $lines_to_delete)
    echo "delete: $lines"
    # 使用sed命令删除前80%的行数
    sed -i "1,${lines}d" $file
  fi
done

保存,然后对这个脚本进行授权

2.2 授权
chmod 755 clean_log.sh
2.3 执行
./clean_log.sh
三、效果

效果如下:

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1天前
|
弹性计算 运维 监控
|
1天前
|
弹性计算 运维 Shell
自动日志文件轮转
【4月更文挑战第30天】
5 0
|
2天前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
6 0
|
2天前
|
弹性计算 运维 Shell
使用shell 脚本打印图形3
【4月更文挑战第29天】
10 0
|
2天前
|
存储 弹性计算 运维
使用shell 脚本打印图形2
【4月更文挑战第29天】
9 0
|
2天前
|
弹性计算 运维 Shell
使用shell 脚本打印图形1
【4月更文挑战第29天】
9 0
|
2天前
|
存储 弹性计算 运维
调整虚拟机内存参数的shell 脚本
【4月更文挑战第29天】
8 0
|
2天前
|
弹性计算 应用服务中间件 Shell
切割Nginx 日志文件
【4月更文挑战第29天】
9 1
|
2天前
|
存储 弹性计算 运维
统计/var/log 有多少个文件
【4月更文挑战第29天】
9 1
|
3天前
|
弹性计算 运维 Shell