Linux使用shell做nginx和tomcat日志切割

本文介绍了如何利用logrotate工具和shell脚本来管理Linux系统中nginx和tomcat的日志文件。针对nginx,通过shell脚本按天分割日志,包括获取昨天日期、移动并重命名日志、新建默认日志以及发送信号量让nginx重新打开日志。同时设置了定时任务来定期执行日志切割。对于tomcat日志,当文件大小超过100M时,将其复制到指定目录并清空原有日志。同样,使用crontab设置定时任务执行日志清理。
摘要由CSDN通过智能技术生成

日志切割

一 logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。
logrotate详细用法

二 nginx默认的日志没有按天切割,都是存放在一块的,不方便查阅,所以想写个shell脚本来是先nginx日志的按天分割。
脚本思路【按天分割日志】

a、获取昨天的日期(date -d yesterday +%Y%m%d),用来作为分割后日志的名称

b、将源日志文件移动到新的newlogs文件夹里,并按时间重命名

c、在源日志文件夹(logs)里新建默认日志文件(access.log)

d、给nginx一个信号量,重新打开日志

f、设置一个定时任务,定时执行日志切割的脚本

1 操作步骤

a、新建日志分割的文件夹newlogs(mkdir /usr/local/nginx/newlogs)

b、编写脚本,暂且命名为:splitlogs.sh吧,脚本内容如下:

#!/bin/bash
LOGPATH=/usr/local/nginx/logs/access.log
BASEPATH=/usr/local/nginx/newlogs
LOGBAK=$BASEPATH/$(date -d yesterday +%Y-%m-%d).log
#echo $LOGBAK
mv $LOGPATH $LOGBAK
touch $LOGPATH
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

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

]# crontab -l
50 3 * * * /root/nginx_splitlogs.sh  >/dev/null 2>&1

每天凌晨3点50分执行

三 切割tomcat的日志文件
1 当文件大于100M的时候,先把文件复制到指定的目录,再清空原先tomcat的日志文件。

#!/bin/sh
log_dir=/var/log/tomcat
monitor_file=$1 #tomcat目录下的catalina.out文件的绝对路径
file_size=`du $monitor_file | awk '{print $1}'`
if [ $file_size -ge 102400 ]
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

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

*/1 * * * * sh /lee_js/monitor_script.sh /opt/apache-tomcat-7.0.67/logs/catalina.out 

#第一个路径是脚本的路径,第二个参数是tomcat下catalina.out文件的绝对路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值