为了减小nginx的日志文件体量,需要对文件进行切割,也就是按指定规则把内容拷贝到另外一个指定规则命名的文件里面保存,同时重新创建相应的可被nginx写的新日志文件,以此循环达到按需分割存储日志的目的。
按分钟级别测试手动切割日志
手动测试切割
#!/bin/bash
#nginx日志存放的目录,access.log和error.log
LOG_PATH="/var/log/nginx/"
#方便测试,将时间设置到分,也就是按分钟命名旧日志的存储文件
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
#指定进程id
PID=/var/run/nginx/nginx.pid
#按指定时间格式命名存放旧日志的文件名
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
#同上
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`
linux下保存这个sh文件,并赋予运行权限
chmod +x cut_my_log.sh
按分钟级别测试自动定时切割日志
linux定时任务插件 crontabs,使用cron非常灵活的表达式,可以做到按指定时间执行指定命令
安装
yum install crontabs
编辑并且添加一行新的任务,每整分钟0秒执行一次shell脚本
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
重启定时任务
serveice crond restart
常用crond指令
service crond start #启动服务
service crond stop #关闭服务
service crond restart #重启服务
service crond reload #重新载入配置
crontab -e #编辑任务
crontab -l #查看任务列表
参考文献:每天定时为数据库备份:https://www.cnblogs.com/leechenxiang/p/7110382.html