nginx日志分割(linux定时器定时分割)

前言

        nginx安装目录下的logs文件夹下,主要有三个文件,access.log,error.log,nginx.pid。

        其中access.log和error.log是nginx的默认日志文件,如果没有配置策略,nginx一直跑,这两个文件会变得越来越大,不易管理。因此可以将日志文件进行分割,一个月分割一次,或一天分割一次。

        主要技术:shell + linux定时器 + nginx日志文件重开

场景

        主要实现:每隔1分钟,将access文件重新生成一个文件,保存在一个生成的文件夹下。

nginx日志重开

        主要用到nginx的-usr1信号

        usr1 : reopen the log files 重新打开日志文件

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

linux定时器

        通过crontab命令设置,秒 分 时 日 月 周

 crontab -e

        我们这里设置为

*/1 * * * * sh /opt/log/s.sh

shell脚本

#! /bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
minute=$(date -d "1 minute ago" +"%Y%m%d-%H:%M")

mkdir -p $base_path/$log_path
echo $base_path/access.log
mv $base_path/access.log $base_path/$log_path/access_$minute.log
echo $base_path/$log_path/access_$minite.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

        写shell脚本最为重要的就是注意空格,换行。不然很容易出现莫名其妙的错误。

        按照上面设置好了之后,每个1分钟,会生成一个日志文件

-rw-r--r-- 1 nobody root 4248 Jul 17 22:01 access_20180717-22:00.log
-rw-r--r-- 1 nobody root 6136 Jul 17 22:02 access_20180717-22:01.log
-rw-r--r-- 1 nobody root 6136 Jul 17 22:03 access_20180717-22:02.log
-rw-r--r-- 1 nobody root 6136 Jul 17 22:04 access_20180717-22:03.log
-rw-r--r-- 1 nobody root 6136 Jul 17 22:05 access_20180717-22:04.log
-rw-r--r-- 1 nobody root 5900 Jul 17 22:07 access_20180717-22:06.log
-rw-r--r-- 1 nobody root 5782 Jul 17 22:08 access_20180717-22:07.log
-rw-r--r-- 1 nobody root 5782 Jul 17 22:09 access_20180717-22:08.log
-rw-r--r-- 1 nobody root 6254 Jul 17 22:10 access_20180717-22:09.log

猜你喜欢

转载自blog.csdn.net/u014209205/article/details/81088029