centos nginx的日志处理

1、创建文件

vim /usr/local/nginx/sbin/cut_nginx_log.sh

2、复制脚本内容

1、Nginx循环日志,然后进行切割,并压缩成tar.gz,删除压缩后的原日志 删除100天前的文件

#!/bin/bash
# Nginx日志切割脚本,压缩日志打包脚本

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#日志路径
log_path='/usr/local/nginx/logs'
#nginx的pid路径
pid_path="/usr/local/nginx/logs/nginx.pid"
#截取日志名称
logs_names=$(ls -f $log_path |grep log|awk -F ".log" '{print $1}')
#生成昨天的时间
time_date=$(date -d "yesterday" +"%Y%m%d")
#若指定10天前  date -d "10 day ago 2017-06-08" +%Y-%m-%d

#进入日志目录
cd ${log_path}
#循环日志,然后进行切割,并压缩成tar.gz,删除压缩后的原日志
for log_name in $logs_names
do
    mv ${log_name}.log ${log_name}.$time_date.log
    tar -czf ${log_name}.$time_date.tar.gz ${log_name}.$time_date.log
    rm -rf ${log_name}.$time_date.log
done

#重新启动nginx
kill -USR1 `cat ${pid_path}`

#删除100天前的文件
find $log_path -mtime +100 -type f -name "*.log" | xargs rm -f
find $log_path -mtime +100 -type f -name "*.tar.gz" | xargs rm -f

2、普通日志切割

#!/bin/bash
#此脚本用于自动分割Nginx的⽇志,包括access.log和error.log
#每天00:00执行此脚本将前1天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/usr/local/nginx/logs/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/usr/local/nginx/logs/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`

3、修改文件权限

chmod +x /usr/local/nginx/sbin/cut_nginx_log.sh

4、添加定时任务

#编辑计划任务 
crontab -e
#复制以下脚本任务
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh

5、测试脚本

cd /usr/local/nginx/sbin
#执行脚本
bash cut_nginx_log.sh 

6、crontab的一些命令

crontab  -u       # define user #指定用户
crontab  -e        #edit user’s crontab #编辑计划任务
crontab  -l      # list user’s crontab #查看计划任务
crontab  -r       #delete user’s crontab #删除计划任务
rpm -q crontabs    #查软件是否已安装
systemctl status crond # 查看crond服务状态

7、cron权限相关

#cron权限管理

/etc/cron.allow #白名单:只允许在此名单内的用户使用crontab(此文件本身不存在)
/etc/cron.deny #黑名单:在此名单内的用户不可以使用crontab

#注:两个文件都不存在,只有root用户可以使用crontab
#两个文件都存在,allow优先执行