Nginx 日志自动分割
2017-12-01 21:25
375 查看
Nginx 的日志都是写在一个文件当中的,不会自动地进行切割,如果访问量很大的话,将导致日志文件容量非常大,不便于管理和造成Nginx 日志写入效率低下等问题。所以,往往需要要对access_log、error_log日志进行切割。
切割日志一般利用USR1信号让nginx产生新的日志。实例:
1、分析:
将上面的脚本放到crontab中,每小时执行一次(0 ),这样每小时会把当前日志重命名成一个新文件;然后发送USR1这个信号让Nginx 重新生成一个新的日志。(相当于备份日志)
将前7天的日志删除;
2、说明:
在没有执行kill -USR1 $pid之前,即便已经对文件执行了mv命令而改变了文件名称,nginx还是会向新命名的文件”*access.log.2016032623”照常写入日志数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。
3、logrotates:
使用系统自带的logrotates,也可以实现nginx的日志分割,查看其bash源码,发现也是发送USR1这个信号。
切割日志一般利用USR1信号让nginx产生新的日志。实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash logdir="/data/logs/nginx" pid=`cat $logdir/nginx.pid` DATE=`date -d "1 hours ago" +%Y%m%d%H` DATE_OLD=`date -d "7 days ago" +%Y%m%d` for i in `ls $logdir/*access.log`; do mv $i $i.$DATE done for i in `ls $logdir/*error.log`; do mv $i $i.$DATE done kill -s USR1 $pid rm -v $logdir"/access.log."$DATE_OLD* rm -v $logdir"/error.log."$DATE_OLD* |
将上面的脚本放到crontab中,每小时执行一次(0 ),这样每小时会把当前日志重命名成一个新文件;然后发送USR1这个信号让Nginx 重新生成一个新的日志。(相当于备份日志)
将前7天的日志删除;
2、说明:
在没有执行kill -USR1 $pid之前,即便已经对文件执行了mv命令而改变了文件名称,nginx还是会向新命名的文件”*access.log.2016032623”照常写入日志数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。
3、logrotates:
使用系统自带的logrotates,也可以实现nginx的日志分割,查看其bash源码,发现也是发送USR1这个信号。
相关文章推荐
- Linux下自动分割Nginx日志文件(一)-----自定义脚本和定时任务
- nginx日志自动分割
- 自动分割nginx服务的日志文件
- Nginx日志分割并自动删除日志
- nginx日志自动分割的完美实现
- Linux下自动分割Nginx日志文件(三)-----Logrotate
- Nginx 日志自动分割脚本
- Nginx 日志自动分割脚本
- Linux下自动分割Nginx日志文件(二)-----Cronolog
- centos中nginx按日期自动分割访问日志
- Linux:nginx或者Apache 每天自动分割日志文件
- centos中nginx按日期自动分割访问日志的方法
- nginx日志分割
- nginx 日志分割脚本
- 使用logrotate做nginx日志分割
- shell脚本控制nginx日志文件分割
- 利用cronolog对nginx日志进行分割
- nginx 直接在配置文章中设置日志分割
- 改变nginx logrotate方式采用sh文件自动切割日志文件
- logrotate 进行nginx日志分割