app日志清理压缩

#!/bin/bash
# 获取昨天时间,时间格式: 2019-07-05
date1=$(date -d -1days +%F)
# 定义服务列表,每项代表一个服务
app=('app1' 'app2' 'app3' 'app4')

# 遍历服务列表
for i in ${app[@]}
do
  # 定义日志的路径,必须和实际的日志路径保持一致
  dir=/home/centos/$i/logs
  # 切换到指定服务日志的目录下
  cd $dir
  # 将catalina.out文件拷贝为catalina.2019-07-05,同时下一步操作把catalina.out文件清空,达到每天每天一个日志文件的效果
  # 如果日志已经是每天生成一个单独的文件,需要注释这两行
  cp catalina.out catalina.$date1
  echo '' > catalina.out
  # 将catalina.2019-07-05文件压缩成名为catalina.2019-07-05.tar.gz的归档文件,--remove-files是在压缩成功结束后,删除源文件
  tar -Pzcf catalina.$date1.tar.gz catalina.$date1 --remove-files
  # 删除当前服务日志目录30天之前的文件
  find $dir -atime +30 -exec rm -f {} \;
  #删除7天之前的log文件
  # find $dir -atime +7 -name "*log*" -exec rm -f {} \;
done
#00 00 * * * /to/path/clean_log.sh

日志清理压缩脚本说明:
1. 需要了解当前服务日志输出的文件名
2. 将脚本中的服务列表更改为自己的服务对应的目录名,手动执行进行测试脚本能不能正常运行
3. 给脚本添加执行权限(chmod +x clean_log.sh),添加到定时任务(crontab -e)
4. 重启crond服务,确保crontab任务正常执行
5. 当前服务器的脚本只能在当前服务器执行,不支持跨机器,多个服务器需要定义多个脚本

or 2

#!/bin/bash
#funtion
clean_log () {
  dir=/home/tomcat/$1/logs
  find $dir -atime +7 -exec rm -f {} \;
}

logs_ls () {
 dir=/home/tomcat/$1/logs
 sum=`ls $dir | wc -l`
 echo "$1 logfile count is [${sum}]"
}

list_tomcat=('flow' 'sso' 'utr' 'uc' 'bid' 'portal-xm' 'sso-xm' 'bid-xm' 'cms-xm' 'flow-xm' 'uc-xm' 'utr-xm' 'utrj-xm' 'portal')
for i in ${list_tomcat[@]};
do
 clean_log $i
 logs_ls $i
done

exit 0

or 3

#!/bin/bash
date1=$(date -d -1days +%Y-%m-%d-%H_%M)
#funtion
clean_log () {
  dir=/home/tomcat/$1/logs
  cd $dir
  cp catalina.out catalina.$date1
  echo '' > catalina.out
  tar -Pzcf catalina.$date1.tar.gz catalina.$date1 --remove-files
  find $dir -atime +30 -exec rm -f {} \;
  find $dir -atime +7 -name "*log*" -exec rm -f {} \;
}
clean_log appa
clean_log appb
...
#!/bin/bash
#可以tree到某一目录下所有的tomcat目录,新增或删减tomcat无需修改脚本文件,筛选条件需严格指定
home_path=/home/tomcat
all_dir=$(tree -Lf 2 ${home_path} | grep -E -v "logs|tar|dmp|bak|./jjdt|nx$|ah$|sz$|\.$|^$|tomcat$|directories" | awk '{print $NF}')
clean_log () {
  dir=$1/logs
  find $dir -atime +7 -exec rm -f {} \;
}

logs_ls () {
 #dir=/home/tomcat/$1/logs
 sum=`ls $1/logs | wc -l`
 echo "$1 logfile count is [${sum}]"
}

#list_tomcat=('flow' 'sso' 'utr' 'uc' 'bid' 'portal-xm' 'sso-xm' 'bid-xm' 'cms-xm' 'flow-xm' 'uc-xm' 'utr-xm' 'utrj-xm' 'portal')
for i in ${all_dir};
do
 clean_log $i
 logs_ls $i
 #echo $i
done

(多个不同应用)

#!/bin/bash
date1=$(date -d -1days +%Y-%m-%d-%H_%M)
app=('apache' 'tomcat1' 'tomcat2')
for i in ${app[@]}
do
case $i in
apache)
  dir=/usr/local/httpd/logs
  cd $dir
  cp mod_jk.log mod_jk.$date1
  echo '' > mod_jk.log
  tar -zcvf mod_jk.$date1.tar.gz mod_jk.$date1
  rm -f mod_jk.$date1
  #删除30天之前的文件
  find $dir -atime +30 -exec rm -f {} \;
;;
*)
  dir=/home/sso/$i/logs
  cd $dir
  cp catalina.out catalina.$date1
  echo '' > catalina.out
  tar -zcvf catalina.$date1.tar.gz catalina.$date1
  rm -f catalina.$date1
  #删除30天之前的文件
  find $dir -atime +30 -exec rm -f {} \;
  #删除7天之前的log文件
  find $dir -atime +7 -name "*log*" -exec rm -f {} \;
;;
esac
done

#!/bin/bash
#00 00 * * * scriptname
#将昨天的日志打包,传输给备份机,本地保留14个月的历史备份
date1=$(date -d -1days '+%F_%T')
date2=$(date -d -1days '+%F')
bakPath=/home/nfcq/Logback
scpAddress=192.168.100.118
scpUsername=nq

logType2=catalina.out
logType3=catalina.${date1}.out
logType3_1=catalina.${date1}.out.tar.gz

logType4=catalina.${date2}.log
logType5=host-manager.${date2}.log
logType6=localhost.${date2}.log
logType7=manager.${date2}.log

logTypeflow=flow.log.${date2}
logTypeportal=zbxsoft-portal.log.${date2} 
logTypesso=passport.log.${date2}
logTypeuct=zbxsoft.log.${date2}
logTypeutrm=utrs.log.${date2}
logTypeutrj_web=utrs.log.${date2}


apacheCleanLog (){
  logDir=/home/apache2/logs
  scpBack=${bakPath}/${web_id}
  apacheLog=(error_log mod_jk.${date2}.log pbid.csuaee.com.cn-access${date2}.log sso.csuaee.com.cn-access${date2}.log xx.csuaee.com.cn-access${date2}.log jjdt.csuaee.com.cn-access${date2}.log utrj.csuaee.com.cn-access${date2}.log)

  cd ${logDir}
  for i in ${apacheLog[@]}
  do
    logType_apache=${i}.tar.gz
    tar -zcf ${logType_apache} ${i} --remove-files
    scp ${logType_apache} ${scpUsername}@${scpAddress}:${scpBack} 2>/dev/null
  done
  find ${logDir} -mtime +434 -exec rm -f {} \;
}

cleanLog (){
  app_id=${1}
  [[ -n ${app_id} ]] || exit;
  logDir=/home/nfcq/utrs/tomcat-${app_id}/logs
  export scpBack=${bakPath}/${app_id}
  cd $logDir
  cp ${logType2} ${logType3}
#  echo '' > ${logType2}
  tar -Pzcf ${logType3_1} ${logType3} --force-local --remove-files
  #scp logfile
  scpLog
  #cleal logs 434 days(14 months) ago
  find $logDir -mtime +434 -exec rm -f {} \;
}

scpLog (){
  newLogType=logType${app_id}
  newLogType=$(eval echo '$'$newLogType)
  cd $logDir && if  stat ${newLogType} >/dev/null 2>&1;then :;else  mv "${newLogType} " ${newLogType};fi
  logtype=(${logType3_1} ${logType4} ${logType5} ${logType6} ${logType7} ${newLogType})
  for i in ${logtype[@]}
  do
    scp ${logDir}/${i} ${scpUsername}@${scpAddress}:${scpBack} 2>/dev/null
  done
  [[ ${app_id} == "utrj_web" ]] && scp ${logDir}/cmrsInfo.log.${date2} ${scpUsername}@${scpAddress}:${scpBack} 2>/dev/null
}

cleanLog flow
cleanLog portal
cleanLog sso
cleanLog uct
cleanLog utrm
cleanLog utrj_web
#apacheCleanLog 

你可能感兴趣的:(app日志清理压缩)