Nginx 是一个非常轻量的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件容量非常大,不便于管理。
所以为了便于管理,我打算把Nginx的日志文件access.log进行切割。
采用的方案便是通过crontab每天零点定时调用shell脚步进行切割,以每天生成一个日志文件。当天的日志文件为:access.log, 昨天以及之前的日志文件就为:access-年月日.log。
shell脚本如下(nginx_log_division.sh):
# !/bin/bash
# 日志存储路径
logs_path="/data/Logs/nginx/"
#以前的日志文件。
log_name="access.log"
#日志文件名前缀
log_end_name="access"
pid_path="/run/nginx.pid"
# 修改日志文件名
mv ${logs_path}${log_name} ${logs_path}${log_end_name}-$(date --date="yesterday" +"%Y-%m-%d").log
# 向 Nginx 主进程发送 USR1 信号,USR1 信号是重新打开日志文件
kill -USR1 `cat ${pid_path}`
crontab 配置如下:
0 0 * * * root /home/ubuntu/www/nginx_log_division.sh
切记crontab要注意权限问题,如果遇到不执行,请检查文件所属用户以及权限。
阅读数 72509