生产环境中的服务器,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率。同时,为了方便对日志进行分析计算,须要对日志文件进行定时切割。定时切割的方式有按月切割、按天切割、按小时切割等。最常用的是按天切割。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 保存脚本到sbin路径,命名为:cut_nginx_log.sh
cd /usr/local/nginx/sbin

vim cut_nginx_log.sh

# 输入以下内容
#!/bin/bash
# 这个脚本每天00:00运行
# Nginx日志文件的存放路径

logs_path = "/usr/local/nginx/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 pid
kill -USER1 'cat /usr/local/nginx/nginx.pid'

配置crontab执行

1
2
3
4
5
# 输入命令,打开VI脚本
crontab -e

# 输入内容
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh