一、前言
后台系统运行久了,日志文件的体积日渐增多,除了使用常用的日志框架如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" ];thenecho "$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" $filefi
done
保存,然后对这个脚本进行授权
2.2 授权
chmod 755 clean_log.sh
2.3 执行
./clean_log.sh
三、效果
效果如下: