一、定时任务执行shell脚本方式
1、先上shell脚本
注意路径的修改!!
#!/bin/sh
# Program:
# Auto cut nginx log script.
# nginx日志路径
LOGS_PATH=/apps/svr/nginx-1.16.1/logs
TODAY=$(date -d 'today' +%Y-%m-%d)
# 移动日志并改名
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${TODAY}.log
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log
# 向nginx主进程发送重新打开日志文件的信号
kill -USR1 $(cat /apps/svr/nginx-1.16.1/conf/nginx.pid)
2、定时的配置
每天23:59将日志定时切割,这个时间的设定和你脚本的日期记录取值需要对应
vim /etc/crontab
59 23 * * * root /web/scripts/nginx-1.16.1/cutnginxlog.sh >> /apps/svr/nginx-1.16.1/logs/cutnginxlog.log 2>&1
3、注意nginx日志路径的正确指向
二、logrotate的使用:一般linux系统自带
1、yum安装logrotate
yum install logrotate
安装完成后检查相应文件的生成情况,正常情况会在/etc/cron.daily/ 生产logrotate脚本
2、添加nginx日志切割配置
(1)进入目录
cd /etc/logrotate.d/
vim nginx
(2)添加以下配置
/home/wwwlogs/*log {
su root www
create 600 www www
daily
dateext
rotate 10
missingok
notifempty
compress
sharedscripts
olddir /home/wwwlogs/oldlogs # 这个目录要事先创建好,并给相关权限
postrotate
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}
(3)目录情况:
/home/wwwlogs/ 为nginx的日志目录
/usr/local/nginx/logs/nginx.pid 运行的PID存放文件
3、以上配置完成,每天切割日志
4、参考内容