nginx 日志

nginx 日志切割

日志切割 是线上很常见的操作,能够控制单个日志文件的大小,便于对日志进行管理

针对nginx的访客日志进行切割

[root@localhost ~]# cd /opt/nginx1.8/logs/
[root@localhost logs]# ll -lh
total 136K
-rw-r--r-- 1 root root 72K Jul 28 20:04 access.log
-rw-r--r-- 1 root root 55K Jul 28 20:04 error.log
-rw-r--r-- 1 root root 5 Jul 28 15:56 nginx.pid
-rw-r--r-- 1 root root 5 Jul 28 15:56 nginx.pid.oldbin

给当前日志文件重命名,注意使用mv命令

[root@localhost logs]# mv access.log "access.log_$(date +"%Y-%m-%d")"

发送信号给nginx主进程,  给他发送一个重新打开的信号,让nginx生成新的日志文件

nginx -s reopen  #这个命令等同于 kill -USR1  `cat  nginx.pid` 

注意在以上的nginx重命名日志切割链,不要着急立即对文件修改,而是要注意等待几秒钟,

因为nginx的工作模式特点,master下发指令给worker去干活,刚发指令的时候只是一个标记,

当业务量很大的时候,这个修改操作可能会有点慢,不会立即生效。

在生产环境下,日志切割主要是以定时任务的形式来操作

编写一个定时日志切割的脚本

vim cut_nginx_log.sh 

[root@localhost ~]# cat cut_nginx_log.sh
#!/bin/bash
#脚本放入crontab,每天0点执行,只是一个nginx日志切割脚本
#nginx日志存放点
logs_path="/opt/nginx1.8/logs/"
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y-%m-%d").log

# 也能换成 kill -USR1 `cat /opt/nginx1.8/logs/nginx.pid`
nginx -s reopen

 

 

  tree 命令没有 可以洗下载 yum  install tree -y

把该脚本的执行,加入crontab 每天0点执行

crontab -e #打开定时任务

crontab -l  #查看定时任务

编辑如下内容

0 0 * * * bin/bash /root/cut_nginx_log.sh  #必须用绝对路径

 

posted on 2021-07-28 22:11  sprr  阅读(64)  评论(0编辑  收藏  举报