shell脚本:tomcat和nginx日志切割

tomcat日志切割:

点击查看代码
#!/bin/bash

######################################
##weibaxiao 用户tomcat日志切割########
######################################
LOG_HOME=/data/aa/logs
cd $LOG_HOME
CATA_LOG='catalina.out aa-all.log'  # 引号内可以添加目录下得多个文件名
date_now=`date +%Y%m%d`
#d7=`date -d'7 day ago' +%Y%m%d`
hour_min=`date +"%H%M"`

function log_qiege() {
	num=`find ./ -size +50M -name $1|wc -l`
	if [ $num -eq 1 ]; then
	    echo "开始切割日志文件:$1"
		cp $1 ${1}-${date_now}
		echo "" > $1
	else 
		echo "没有需要切割的日志文件"
	fi

}
function del_log_file() {
	if [ "$hour_min" == "2320" ]; then
		echo "删除10天之前的日志文件"
		find ./ -mtime +3|grep -iE '.log|catalina'|xargs rm -f 
	else
		echo "没有需要清理的旧文件"
	fi
} 

function main() {
	for file in `echo $CATA_LOG`
	do
		log_qiege $file	
	done
	
	del_log_file
}

main

nginx日志切割:

点击查看代码
#!/bin/bash
#此脚本用于自动分割Nginx的日志,包括access.log和error.log
#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/data/nginx/logs
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/data/nginx/logs/nginx.pid
#分割日志
file_log='access.log error.log'  # 需要切割的日志文件

cd $LOG_PATH
function qiege() {

	for file in `echo $file_log`
	do
		temp_num=`find ./ -size +50M -name $1|wc -l`
		if [ $temp_num -eq 1 ]; then
			mv ${LOG_PATH}/$1 ${LOG_PATH}/${1}-${YESTERDAY}
		fi
		kill -USR1 `cat ${PID}`
	done

}
#向Nginx主进程发送USR1信号,重新打开日志文件

function main() {
	qiege
}

main
posted @ 2023-07-04 16:54  小尾巴想看雪  阅读(12)  评论(0编辑  收藏  举报