ubuntu下Nginx的日志文件切割

返回 使用微信阅读
请用微信扫一扫
JackFan

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要注意权限问题,如果遇到不执行,请检查文件所属用户以及权限。

阅读数  62566