美文网首页
Linux_249_Nginx日志切割

Linux_249_Nginx日志切割

作者: 为宇绸缪 | 来源:发表于2022-09-15 21:01 被阅读0次

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

1、针对nginx的访客日志进行切割
[root@yuweijie logs]# ll -h
total 48K
-rw-r--r-- 1 root root 17K Mar 1 16:47 access.log
-rw-r--r-- 1 root root 20K Mar 1 16:47 error.log
-rw-r--r-- 1 root root 6 Mar 1 05:45 nginx.pid
-rw-r--r-- 1 root root 5 Mar 1 05:41 nginx.pid.oldbin

2、给当前日志文件重命名,注意使用mv命令
mv access.log "access.log_$(date +"%Y-%m-%d")"

3、发信号给nginx主进程,让他发送一个重新打开的信号,让nginx生成新的日志文件
nginx -s reopen # 这个命令等同于 kill -USR1 cat nginx.pid

4、注意以上的nginx重命名日志切割操作,不要着急立即对文件修改,而是要注意等待几秒钟,因为nginx的工作模式特点,master下发指令给worker去干活,刚发指令的时候只是一个标记,当业务量很大的时候,这个修改操作可能会有点慢,不会立即生效

5、在生产环境下,日志切割主要是以定时任务的形式来操作
[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
# 也能换成 nginx -s reopen
kill -USR1 cat /opt/tngx232/logs/nginx.pid

使用bash主动执行
bash cut_nginx_log.sh

[root@yuweijie logs]# bash cut_nginx_log.sh
[root@yuweijie logs]# tree
.
├── 2022
│ └── 02
│ └── access_2022-02-28.log
├── access.log
├── access.log_2022-03-01
├── cut_nginx_log.sh
├── error.log
├── nginx.pid
└── nginx.pid.oldbin

6、把该脚本的执行,加入crontab,每天0点执行
crontab -e # 打开定时任务
0 0 * * * /bin/bash /opt/tngx232/logs/cut_nginx_log.sh

相关文章

网友评论

      本文标题:Linux_249_Nginx日志切割

      本文链接:https://www.haomeiwen.com/subject/orjdortx.html