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