linux中Nginx访问日志的自动切割

作者:Garany 发布于:2015-01-15 分类:破万卷书

Nginx 虽然是轻量的 Web 服务器,优点多多。但其产生的访问日志文件一直就是一个,不会自动地进行切割。如果访问量很大的话,将导致日志文件容量非常大,内容非常多。不利于管理,日后出现问题查看也很不方便。

在 Linux 中使用 Shell 脚本加 crontab 命令就能进行日志自动切割。在 Linux 平台上进行切割,需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。

1.日志切割要求

在每天零点将前一天的日志存为另外一个文件。这里就将 Nginx 日志目录 logs 中的 access.log 存为 access_[yyyy-MM-dd].log 的文件。

 

2.切割日志脚本

# pwd

/usr/local/nginx/logs

# vim nginx_log.sh 

 

#!/bin/bash

logs_path="/usr/local/nginx/logs/"

pid_path="/usr/local/nginx/logs/nginx.pid"

mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

kill -USR1 `cat ${pid_path}`

 

3.修改文件权限

# pwd

/usr/local/nginx/logs

chmod u+x nginx_log.sh

 

4.设置计划任务

# crontab -e

 

0 0 * * * /usr/local/nginx/logs/nginx_log.sh


5.日后访问日志就以每天的格式呈现了

#pwd
/usr/local/nginx/logs


# ls
access_20141223.log
access_20141224.log
access_20141225.log
access_20141226.log
access.log
error.log
nginx_error.log
nginx_log.sh
nginx.pid


评论列表

maillot saxo bank
2015-02-03 10:06
一更新就更新些看不懂的。
IT疯狂女
2015-01-23 17:12
一看博主就是一个很牛逼的人

我来说说