shell脚本限制日志文件大小和行数

背景: 项目server在后端持续运行,日志文件不断变大,需及时进行清空。

解决方案:编辑sh脚本,指定时间间隔轮询;将超出限制的日志文件,先备份,再清空原日志文件内容。

清空日志文件内容的方法有:

            1.  echo "" > test.log

            2. cat /dev/null > test.log

            3. cp /dev/null test.log

            4.  > test.log

            5. truncate -s 0 test.log

1.限制指定日志文件大小(1024*10字节)

#!/bin/sh

function limit_size_log(){  
    local logfile=$1  
    local maxsize=$2 

    if [ ! -f "$logfile" ]; then
    sudo touch $logfile
    fi

    filesize=`ls -l $logfile | awk '{ print $5 }'`

    if [ $filesize -gt $maxsize ]

    then

        echo "$filesize > $maxsize"

        sudo cp $logfile $logfile"`date +%Y-%m-%d_%H:%M:%S`".log

        sudo cp /dev/null $logfile

    else

        echo "$filesize < $maxsize"

    fi

}

# running
while true
do
    limit_size_log /var/log/test.log (1024*10)
    sleep 60
done

 

2. shell 脚本限制指定日志文件行数(10000行)

#!/bin/sh

function limit_count_log(){  
    local logfile=$1  
    local maxline=$2 

    if [ ! -f "$logfile" ]; then
    sudo touch $logfile
    fi
    linecount=`/usr/bin/wc -l $logfile|awk '{print $1}'`;  
    if [ ${linecount} -gt ${maxline} ];then    
        #delcount=`expr ${linecount} - ${maxline}`;       
        #sudo sed -i "1,${delcount}d" $logfile    
        sudo cp $logfile $logfile"`date +%Y-%m-%d_%H:%M:%S`".log
        sudo tar -czPvf $logfile"`date +%Y-%m-%d_%H:%M:%S`".log.tar.gz $logfile"`date +%Y-%m-%d_%H:%M:%S`".log
        sudo rm $logfile"`date +%Y-%m-%d_%H:%M:%S`".log
        sudo cp /dev/null $logfile
    else    
        echo  $linecount
    fi
}

# running
while true
do
    limit_count_log /var/log/test.log 10000
    sleep 60
done
--------------------- 
作者:LeonTom 
来源:CSDN 
原文:https://blog.csdn.net/LeonTom/article/details/82945422 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值