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 #必须用绝对路径