本文转载自https://www.imooc.com/article/13260
分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。
特点:
1、功能丰富
应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。
2、通用
通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。
3、更加易于理解
用shell方式相对更加好理解,并且易于后续的维护和功能的添加。
好了,话不多说直接上脚本:
#!/bin/bash #Jeson #Email:[email protected] #变量定义:access、error日志文件列表 NGINX_LOG=(imoocc_com_access iaskjob_com error) NGINX_ACCESS_PATH=/opt/logs/nginx/access NGINX_ERROR_PATH=/opt/logs/nginx/error #日期变量 Ydate=`date -d yesterday +%Y%m%d` Adate=`date -d "20 days ago" +%Y%m%d` #PID文件和nginx.conf中定义一致 Nginxpid=/opt/app/nginx/nginx.pid #日志的量,超过此值,触发切割 Max_size=1000000 file_size="NULL" #函数Get_Size,获取日志文件的大小。 #rotate funcation function Get_Size(){ logfile=$1 file_size=`ls -l ${logfile}awk ‘{print $5}‘` if [[ $file_size =~ [1-9]* ]];then echo $file_size else echo "error:cant get file ${logfile} size!" exit fi } #函数Log_Rotate,完成日志轮转切割。 # rename log function Log_Rotate(){ SIZE=$1 ACCESS_FILE=$2 BACK_DIR=$3 echo "==============$SIZE $ACCESS_FILE" if [ $SIZE == "NULL" ];then echo "######00000000" if [ ! -d ${BACK_DIR} ];then mkdir ${BACK_DIR} fi mv -f ${ACCESS_FILE} ${BACK_DIR}/${Ydate}.log touch ${ACCESS_FILE} rm ${BACK_DIR}/${Adate}.log elif [ $SIZE -gt $Max_size ];then echo "#######11111111" if [ ! -d ${BACK_DIR} ];then mkdir ${BACK_DIR} fi mv -f ${ACCESS_FILE} ${BACK_DIR}/${Ydate}.log touch ${ACCESS_FILE} rm ${BACK_DIR}/${Adate}.log fi } #主功能段,作用遍历日志,输入参数为size,则按照size进行切割,如果为day,则按照日常轮转进行。 for logname in ${NGINX_LOG[@]} do if [ ${logname} == ‘error‘ ];then LOG_FILE=${NGINX_ERROR_PATH}/${logname}.log BACK_DIR=${NGINX_ERROR_PATH}/${logname} else LOG_FILE=${NGINX_ACCESS_PATH}/${logname}.log BACK_DIR=${NGINX_ACCESS_PATH}/${logname} fi if [ $1 == "size" ];then file_size=`Get_Size ${LOG_FILE}` Log_Rotate ${file_size} ${LOG_FILE} ${BACK_DIR} echo $file_size elif [ $1 == "day" ];then Log_Rotate ${file_size} ${LOG_FILE} ${BACK_DIR} else echo "Param : $logname error!" fi done #給nginx发送一个信号量,让nginx重载,重新重新生成日志 ## restart nginx [ ! -f $Nginxpid ] kill -USR1 $(cat $Nginxpid)
分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。
特点:
1、功能丰富
应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。
2、通用
通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。
3、更加易于理解
用shell方式相对更加好理解,并且易于后续的维护和功能的添加。
好了,话不多说直接上脚本:
作者:
幕客技术
链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。
特点:
1、功能丰富
应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。
2、通用
通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。
3、更加易于理解
用shell方式相对更加好理解,并且易于后续的维护和功能的添加。
好了,话不多说直接上脚本:
作者:
幕客技术
链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。
特点:
1、功能丰富
应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。
2、通用
通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。
3、更加易于理解
用shell方式相对更加好理解,并且易于后续的维护和功能的添加。
好了,话不多说直接上脚本:
作者:
幕客技术
链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。
特点:
1、功能丰富
应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。
2、通用
通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。
3、更加易于理解
用shell方式相对更加好理解,并且易于后续的维护和功能的添加。
好了,话不多说直接上脚本:
作者:
幕客技术
链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!
分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。
特点:
1、功能丰富
应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。
2、通用
通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。
3、更加易于理解
用shell方式相对更加好理解,并且易于后续的维护和功能的添加。
好了,话不多说直接上脚本:
作者:
幕客技术
链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!