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

2023-12-14 22:08:47
一、前言

后台系统运行久了,日志文件的体积日渐增多,除了使用常用的日志框架如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
三、效果

效果如下:
在这里插入图片描述

文章来源:https://blog.csdn.net/tiantang_1986/article/details/135004013
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。