nginx日志切割

【nginx日志切割】
1.查看当前nginx日志
[root@chaogelinux logs]# ll
总用量 12
-rw-r--r-- 1 root root 1645 2月  11 15:30 access.log
-rw-r--r-- 1 root root 2370 2月  11 15:30 error.log
-rw-r--r-- 1 root root    6 2月  11 15:13 nginx.pid

#大致看下日志内容
[root@chaogelinux logs]# tail -2  access.log
192.168.178.12 - - [11/Feb/2020:15:32:22 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
192.168.178.12 - - [11/Feb/2020:15:32:23 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"

2.给文件重命名,注意用mv而不是cp(涉及到文件inode知识)
[root@chaogelinux logs]# mv access.log access.log$(date +"%Y-%m-%d--%H:%M:%S")
[root@chaogelinux logs]# ll
总用量 16
-rw-r--r-- 1 root root 4630 2月  11 15:32 access.log2020-02-11--15:43:49
-rw-r--r-- 1 root root 2370 2月  11 15:30 error.log
-rw-r--r-- 1 root root    6 2月  11 15:13 nginx.pid

3.发送USR1信号给nginx-master,重新打开日志记录,生成新的日志文件
nginx -s reopen  #等同于 Kill -USR1 nginx.pid

4.注意,在以上的nginx重命名日志切割,不要着急立即对文件修改,且要sleep 等待1秒
由于nginx的工作模式,master下发指令给worker只是做了标记,当业务量大的时候,这个修改操作可能会慢一点,不会理解生效

5.在生产环境下,主要以crontab形式,执行cut_nginx_log.sh脚本的

[root@bogon sbin]# pwd
/opt/nginx/sbin
[root@bogon sbin]# cat cut_nginx_log.sh
#!/bin/bash
# 脚本写入crontab,每天0点执行,这是一个nginx日志切割脚本

#nginx日志存放点
logs_path="/opt/tngx232/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/tngx232/logs/nginx.pid`

6.写入crontab
crontab -l
0 0 * * * /bin/bash /opt/nginx/sbin/cut_nginx_log.sh

posted @ 2020-07-31 23:48  王子建  阅读(156)  评论(0)    收藏  举报