centos记录uptime,tomcat日志切割,远程拷贝日志脚本

Posted vijayfly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos记录uptime,tomcat日志切割,远程拷贝日志脚本相关的知识,希望对你有一定的参考价值。

1.uptime日志脚本(每天记录)

#!/bin/sh

dir=/tmp/uptime_log

process=`ps -ef|grep $0|grep -v "grep" |grep -v "vim"|grep -v "ps"|wc -l`
if [ $process -gt 2 ];then
  echo $process
  exit;
fi

if [ ! -d $dir ];then
  mkdir -p $dir;
fi

while true
do
  current_time=`date -d today +"%Y_%m_%d"`
  uptime >> ${dir}/${current_time}_system_check.txt
  sleep 902;
  find $dir -mtime +${time} -type f|xargs rm -rf
  chown -R xxadmin.xxadmin ${dir}/*
done

2.远程拷贝日志脚本

#!/bin/sh

time=`date -d "1 day ago" +"%Y_%m_%d"`

file=catalina-daemon_${time}.out
dir1=/usr/local/tomcat7/logs
dir2=/usr/local/tomcat7-2/logs
dir3=/usr/local/tomcat7-3/logs
dir4=/usr/local/tomcat7-4/logs
remote_ser1=111.111.111.1
remote_ser2=111.111.111.2
remote_ser3=111.111.111.3
local_dir=/tmp/log_list
times=30
pro1=xxx_web
pro2=xxx_api
pro3=xxx_manage
pro4=xxx_forward

uptime_log_dir=/tmp/uptime_log
uptime_file=${time}_system_check.txt
local_uptime_file1=xxx_web
local_uptime_file2=xxxx_db
local_uptime_file3=xxx_nginx

if [ ! -d $local_dir/$time ];then
  mkdir -p $local_dir/$time;
fi
rm -rf $local_dir/$time/*

#tomcat_log
for i in `seq 1 4`
do
{

        rm -rf /tmp/.tmp_a_${i}.txt
        eval echo \$dir${i} > /tmp/.tmp_a_${i}.txt
        dir=`cat /tmp/.tmp_a_${i}.txt`
        
    rm -rf /tmp/.tmp_b_${i}.txt
        eval echo \$pro${i} > /tmp/.tmp_b_${i}.txt
        pro=`cat /tmp/.tmp_b_${i}.txt`

    ssh $remote_ser1 "cd ${dir};tar -zcf catalina-daemon_${time}.out.gz catalina-daemon_${time}.out > /dev/null 2>&1"
        if [ $? -ne 0 ];then
                echo `date`‘--->tar tomcat_log faile‘ >> $local_dir/$time/error.log;
        exit;
        fi

    scp $remote_ser1:$dir/$file.gz $local_dir/$time > /dev/null 2>&1
        if [ $? -ne 0 ];then
                echo `date`‘--->scp tomcat_log.gz faile‘ >> $local_dir/$time/error.log;
                exit;
        fi

    ssh $remote_ser1 ‘rm -rf $dir/${file}.gz > /dev/null 2 >& 1‘
        if [ $? -ne 0 ];then
                echo `date`‘--->rm the tomcat_log.gz file faile‘ >> $local_dir/$time/error.log;
                
        fi

    cd $local_dir/$time;tar -zxf $local_dir/$time/${file}.gz -O > ${pro}_${file};



        find $local_dir -mtime +${times} -type d |grep catalina*.out|xargs rm -rf

}
done

#uptime_log
for i in `seq 1 3`
do 

        rm -rf /tmp/.tmp_c_${i}.txt
        eval echo \$remote_ser${i} > /tmp/.tmp_c_${i}.txt
        remote_ser=`cat /tmp/.tmp_c_${i}.txt`

        rm -rf /tmp/.tmp_d_${i}.txt
        eval echo \$local_uptime_file${i} > /tmp/.tmp_d_${i}.txt
        local_uptime_file=`cat /tmp/.tmp_d_${i}.txt`

    ssh $remote_ser "cd ${uptime_log_dir};tar -zcf ${uptime_file}.gz ${uptime_file} "
    if [ $? -ne 0 ];then
      echo `date`‘--->tar uptime_file faile‘ >> $local_dir/$time/error.log;
      exit;
    fi

    scp $remote_ser:${uptime_log_dir}/${uptime_file}.gz $local_dir/$time > /dev/null 2>&1
    if [ $? -ne 0 ];then
      echo `date`‘--->scp uptime_file faile‘ >> $local_dir/$time/error.log;
      exit;
    fi

    ssh $remote_ser ‘rm -rf ${uptime_log_dir}/${uptime_file}.gz > /dev/null 2 >& 1‘
    if [ $? -ne 0 ];then
        echo `date`‘--->rm uptime_file.gz  faile‘ >> $local_dir/$time/error.log;
        exit;
    fi

    cd $local_dir/$time;tar -zxf $local_dir/$time/${uptime_file}.gz -O > ${local_uptime_file}_${uptime_file};
done
rm -rf $local_dir/$time/*.gz
rm -rf /tmp/.tmp_*.txt

/home/zxadmin/filter_xdaili_log.sh
if [ $? -ne 0 ];then
  echo `date`‘--->filter xdaili log file faile!‘ >> $local_dir/$time/error.log;
fi

3.日志过滤

#!/bin/bash

time=`date -d "1 day ago" +"%Y_%m_%d"`
local_dir=/tmp/log_list
files=`ls ${local_dir}/${time}|grep "xxdaili"`
dir1=filter_files

cd ${local_dir}/$time
if [ ! -d $dir1 ];then
  mkdir -p  $dir1;
fi
rm -rf $dir1/*

for i in $files
do
  if [ ! -f $i ];then
    echo  $i‘  not found‘ >>  $dir1/error.log;
  else
    name=`echo $i|awk -F"." ‘{print$2}‘`
    if [ $name = "txt" ];then
        cat $i |grep -v "min"|awk ‘{print$1"\t"$12}‘ > $dir1/$i
    elif [ $name = "out" ];then
        cat $i |grep ‘Exception\|at ‘ > $dir1/$i
    fi

  fi
    
done

 

以上是关于centos记录uptime,tomcat日志切割,远程拷贝日志脚本的主要内容,如果未能解决你的问题,请参考以下文章

centOS6.5 修改catalina.sh使用crontab自动切割日志tomcat8

Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录

Shell脚本实现 tomcat 日志定时切割

Linux centos7 VMware Apache访问日志不记录静态文件访问日志切割静态元素过期时间

Tomcat日志分割

linux 下 使用cronolog对Tomcat 输出catalina.out 日志按照自定义日期格式进行切割 亲测可用