linux的日志监控和定期处理脚本

具体场景:服务器产生的日志量非常大,每天将近100M+的日志量,所以博主写了一个日志的分隔脚本;每隔2小时执行一次,当日志文件超过6M时,将日志进行转存,命名格式为20180917-12.log,这样可以防止单个日志文件过大,打开时非常耗CPU,【曾经测试在linux上打开1G的纯文本文件,2G内存 双核虚拟机几乎崩溃,CPU瞬间飚满;在Windows下更打不开】所以将日志进行切割转存,但由于日志量太大,所以要进行定期清除日志,规则:当所有日志文件超过3G时,删除掉日期最早的日志文件,这样可以保证硬盘空间的相对稳定,也保留最近期的日志文件。具体实现脚本如下:

#!/bin/bash

#log.sh

#获取所有日志文件的总大小,单位M[此处假设,所有日志存在/mnt/log路径下]

size_all=`du -s -m /mnt/log/ | awk '{print $1}'`

date=88888888

#当/mnt的总容量大于200M时,删除最早创建的日志文件

if [[ $size_all -gt 3000]]; then

    for i in `ls /mnt/log/`; do

        date_i=`echo $i | cut -d '-' -f 1`

        #通过循环获取最小日期的日志文件

posted @ 2018-09-17 20:13  Linux黑客小课堂  阅读(113)  评论(0)    收藏  举报