图片 3

shell脚本切割Tomcat的日志文件,Tomcat服务重启与日志清理脚本

鉴于在调试logback和log4j的文件切割一直无法成功,随性用shell写个脚本用来切割tomcat下的日志文件(大家如果有在logback或log4j使用文件切割成功的话,可以留下使用方式,先谢谢了)

一、前言

   随着每天业务的增长,Tomcat 的catalina.out日志
变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,切割后的日志,还可以定期清理掉久远的日志……

Tomcat服务重启脚本

1:废话少说,直接贴上脚本:

二、Tomcat 日志分割

    我们采用日期形式切割catalina.out 日志,因此采用cronlog 软件切割:

1、安装 cronlog 

yum install -y cronolog
httpd

2、修改bin/catalina.sh文件

(1)   if [ -z
“$CATALINA_OUT” ] ; then

CATALINA_OUT=”$CATALINA_BASE”/logs/catalina.out
fi

改为:

if [ -z “$CATALINA_OUT” ] ;
then
CATALINA_OUT=”$CATALINA_BASE”/logs/%Y-%m-%d.catalina.out
fi

(2)  touch “$CATALINA_OUT”

改为:

#touch “$CATALINA_OUT”

(3) 
org.apache.catalina.startup.Bootstrap “$@” start \

>> “$CATALINA_OUT” 2>&1
“&”

改为: 

org.apache.catalina.startup.Bootstrap “$@”
start 2>&1 \
| /usr/sbin/cronolog “$CATALINA_OUT”
>> /dev/null&

备注:这里有两处这个样子的,似乎改下面那处就可以了,我是把两处都改了…

图片 1

 

3、重启服务即可。

图片 2

tips:不能再用原来的catalina.out
来输出日志了哦,因为刚刚不是被我们注释掉了…

图片 3 

#此脚本适用于本地安装tomcat环境,操作脚本重启。

#!/bin/sh
log_dir=/var/log/tomcat
monitor_file=$1 #tomcat目录下的catalina.out文件的绝对路径
file_size=`du  -m $monitor_file | awk ‘{print $1}’`
if [ $file_size -ge  100 ]
then
        if [ ! -d $log_dir ]
        then
                mkdir /var/log/tomcat 
#创建保存切割文件目录,这个路径可以自行修改,保存到你想要的目录
        fi
        cp $1 /var/log/tomcat/log-`date +%Y-%m-%d-%H%M%S`.log 
#保存日志文件
        echo `date +%Y-%m-%d-%H:%M:%S`”:文件切割” 
>>/var/log/tomcat/split.log  #记录切割日志
        echo “” > $1    #清空tomcat的log/catalina.out文件内容
fi

三、定时清理日志

    想要写一个Shell脚本,定期清理掉久远的日志文件 ,避免磁盘不断被占用。

1、创建Shell 脚本:

 touch auto_del_log.sh

 chmod +x auto_del_log.sh

图片 4

#!/bin/sh
find /usr/local/fz_regulator/logs/ -mtime +60 -name "*.out" -exec rm -rf {} \;
find /usr/local/fz_middlekey/logs/ -mtime +60 -name "*.out" -exec rm -rf {} \;

View
Cod

find:linux的查找命令,用户查找指定条件的文件;
/usr/local/fz_middlekey/logs/:想要进行清理的任意目录;
-mtime:标准语句写法;
+60:查找60天前的文件,这里用数字代表天数;
“*.out”:希望查找的数据类型,”*.jpg”表示查找扩展名为jpg的所有文件,”*”表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm -rf:强制删除文件,包括目录;
{} \; :固定写法,一对大括号+空格+\+;

2、安装定时器 crontabs

yum install crontabs

/sbin/service crond start
//启动服务

3、加入定时任务

crontab -e //编辑当前用户的crontab文件,可指定具体的用户

加入我们的定时任务(表示每天4点10分跑一次脚本):10 4 * * * /usr/local/auto_del_log.sh
>/dev/null 2>&1

更多Tomcat相关教程见以下内容

CentOS
6.6下安装配置Tomcat环境
 
http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux
5.5安装JDK+Tomcat并部署Java项目 
http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat权威指南(第二版)(中英高清PDF版+带书签) 
http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化
http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案
http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤
http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04下安装Tomcat
8.5.9 
http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04安装Tomcat 8 图解 
http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat配置文件server.xml详解 
http://www.linuxidc.com/Linux/2017-10/148003.htm

Tomcat单机多实例部署-多项目部署 
http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat
的详细介绍
:请点这里
Tomcat
的下载地址
:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149785.htm

图片 5

[root@ansible_clent ~]# cat restart_tomcat.sh 
#!/bin/bash
function shutdown_tomcat () {
    #tomcat_id=`jps | grep Bootstrap | awk ‘{print $1}’`
tomcat_id=`lsof -i:8080 | awk ‘NR==2”{print $2}’`
if [ ! $tomcat_id ];then
echo “tomcat process in ${ip} is not exist.”
else
echo “shoutdown ${ip} tomcat”
/bin/kill -9 $tomcat_id
fi
}
function start_tomcat () {
echo “start $ip tomcat”
/bin/sh /data/tomcat/bin/catalina.sh start
/usr/local/java/bin/jps
}
function restart_tomcat () {
shutdown_tomcat
start_tomcat
}
restart_tomcat

说明:这个脚本很简单,linux用个定时器没分钟定时扫描日志文件的大小,就是当文件大于100M的时候,先把文件复制到指定的目录,再清空原先tomcat的日志文件。这里是用crontab来使用定时器,至于这个命令的语法在这里就不多说,有兴趣的可以自行google,这里还是有个小小的不足,因为是按每分钟定时去扫描日志文件,所以最后切割文件大小还是会在100~102M之间。

#此脚本限于在跳板机上使用操作Tomcat重启服务(机器之间做了ssh密钥认证)

然后就用定时器,定时执行这个脚本

[root@ansible_clent ~]# cat restart_tomcat.sh 
#!/bin/sh

2:用 crontab -e 编辑定时器代码

cat <<EOF

*/1 * * * *  sh /lee_js/monitor_script.sh 
/opt/apache-tomcat-7.0.67/logs/catalina.out
#第一个路径是脚本的路径,第二个参数是tomcat下catalina.out文件的绝对路径

重启某些ip的tomcat服务,ip地址以,隔开

EOF
function shutdown_tomcat() {
ip=$1
tomcat_id=`ssh $ip ps -ef | grep tomcat | grep -v grep |awk ‘{print
$2}’`
if [ ! $tomcat_id ];then
echo “tomcat process in ${ip} is not exist.”
else
        echo “shutdown tomcat in ${ip}”
        ssh $ip “/bin/kill -9 $tomcat_id”
    fi
}
function start_tomcat(){
ip=$1
echo “start tomcat in ${ip}”
ssh $ip “JAVA_HOME=/usr/local/java/jdk1.7.0_80;export
JAVA_HOME;/bin/sh /data/tomcat/bin/startup.sh”
ssh $ip “/usr/local/java/jdk1.7.0_80/bin/jps”
}
read -p “请输入你的ip地址列表[以,隔开]:” pool_ip_list
all_list=`awk
‘BEGIN{list=”‘$pool_ip_list'”;split(list,ip_list,”,”);for(ip in
ip_list){print ip_list[ip];}}’`
for ip in ${all_list[*]};do
shutdown_tomcat $ip
start_tomcat $ip
done

Tomcat 日志清理小脚本

#查看磁盘的大小和输出格式:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  5.8G  13G  31% /
tmpfs          1.9G    0  1.9G  0% /dev/shm
/dev/vdb        40G  12G  26G  32% /data

#截取/data目录使用磁盘大小的百分比

$ max=`df -h |awk ‘NR==4”{print $5 }’| cut -d% -f1`
$ echo $max
32

#创建清除日志的脚本

cat clean_log.sh
#!/bin/bash
max=`df -h |awk ‘NR==4”{print $5 }’| cut -d% -f1`
if [ “$max” -gt 75 ];then
    echo ” ” > /data/tomcat/logs/catalina.out
    find /data/tomcat/logs/ -type f -name “*.log” -mtime +5 | xargs rm
-rf
    find /data/tomcat/logs/ -type f -name “localhost_*.txt” -mtime +7
|xargs rm -rf
fi

#创建计划任务,每1小时运行脚本1次

$ crontab -l
0 * * * * /bin/sh /data/clean_log.sh

更多Tomcat相关教程见以下内容

CentOS
6.6下安装配置Tomcat环境
 
http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux
5.5安装JDK+Tomcat并部署Java项目 
http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat权威指南(第二版)(中英高清PDF版+带书签) 
http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化
http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案
http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤
http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5下安装Tomcat 
http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat中session的管理机制 
http://www.linuxidc.com/Linux/2016-09/135072.htm

Tomcat
的详细介绍
:请点这里
Tomcat
的下载地址
:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140872.htm

图片 6

然后保存