linux清理程序日志

#背景:项目日志文件过大导致磁盘空间不足
#!/bin/bash
if [ -d "/usr/local/logs" ];then
 if [ -z $1 ];then
    Month2=`date -d yesterday +%Y-%m`
    FilenameWeek=`date -d yesterday +%Y-%m--%V`
 else
    Month2=`date -d "-$1 month" +%Y-%m`
    FilenameWeek=`date -d "-$1 month" +%Y-%m--%V`
 fi
    #Month2=`date -d "-1 month" +%Y-%m`
    #FilenameWeek=`date -d yesterday +%Y-%m--%V`
    date +%F" "%T > /tmp/findziplog
    ifconfig |grep inet |grep 10 |grep netmask | awk '{print $2}' >> /tmp/findziplog
    df -Th >> /tmp/findziplog
else
exit
fi
if [ -d "/usr/local/logs" ];then
  cd /usr/local/logs
  for Dir in $(ls -d ./*/*/$Month2)
   do
    cd $Dir
    echo "/logs/HC_logs/$Dir"
    Filename=`echo $Dir | awk -F/ '{print $2"_"$3}'`
    find ./ -name '*.log' -mtime +0 -exec zip -m9 ${Filename}_${FilenameWeek}.zip {} \;
    #find ./ -name '*.log' -mmin +40 -exec zip -m9 ${Filename}_${FilenameWeek}.zip {} \;
    echo "${Filename}_${FilenameWeek}.zip"
    cd /usr/local/logs
  done
fi
df -Th >> /tmp/findziplog
date +%F" "%T >> /tmp/findziplog


    find ./ -name '*.log' -mtime +0 -exec zip -m9 ${Filename}_${FilenameWeek}.zip {} \;
   脚本精华:

  -mtime +0 过滤出修改时间大于24小时的日志文件 ,也可以写成 -mtime 1;即大于0就是1 ,代表一天24小时

  zip -m9  压缩后删除源文件,且压缩等级为9

  date -d yesterday +%Y-%m--%V  %V代表按周计时,即这一年的第多少周

posted @ 2022-09-24 18:14  _Zeno  阅读(50)  评论(0编辑  收藏  举报