码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx 笔记与总结(5)访问日志管理:计划任务 + 日志切割

时间:2015-07-28 22:46:44      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

要在第二天的凌晨把前一天的访问日志切割备份,并以时间作为文件名,例如:access.20150728.log,这就需要在 Linux 中格式化时间,例如:

[root@localhost ~]#  date
2015年 07月 28日 星期二 02:33:02 CST
 
[root@localhost ~]# date -d yesterday
2015年 07月 27日 星期一 02:33:18 CST

[root@localhost ~]# date -d yesterday +%Y
2015

[root@localhost ~]# date -d yesterday +%y
15

[root@localhost ~]# date -d yesterday +%Y%m%d
20150727

 

 

编写 shell 脚本

在根目录下创建 data 目录,用于存放 shell 脚本

mkdir /data

 

进入 /data 目录,创建 runlog.sh:

cd /data
vim runlog.sh

 

【测试】 .sh 文件:

echo `date -d yesterday +%Y%m%d`

技术分享

或者

[root@localhost data]# vim runlog.sh
echo $(date -d yesterday +%Y%m%d)

技术分享  

保存退出

  

然后运行该脚本:

[root@localhost data]# sh runlog.sh 
20150727

测试结束。

 

【测试2】

输出备份后的文件路径

vim runlog.sh

 

runlog.sh:

[root@localhost data]# vim runlog.sh

bak=$BASELOG/$(date -d yesterday +%Y%m%d)
LOGPATH=/usr/local/nginx/logs/dee.com.access.log
BASELOG=/data

bak=$BASELOG/$(date -d yesterday +%Y%m%d%H%M).dee.com.access.log
echo $bak

技术分享

保存退出。

 

运行 runlog.sh :

[root@localhost data]# sh runlog.sh 
/data/201507270317.dee.com.access.log

测试结束。

 

 

定义了备份后的文件路径之后,需要把原来的日志文件剪切到新的路径,同时新建一个访问日志文件,最后使用 nginx 信号控制中的 USR1 来完成日志切割:

vim runlog.sh

 

runlog.sh:

LOGPATH=/usr/local/nginx/logs/dee.com.access.log
BASELOG=/data

bak=$BASELOG/$(date -d yesterday +%Y%m%d%H%M).dee.com.access.log

mv $LOGPATH $bak
touch $LOGPATH

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

技术分享  

保存退出。

 

创建计划任务(每分钟执行 1 次):

crontab -e

*/1 * * * * sh /data/runlog.sh

保存退出。

 

此时 /data 目录下的文件:

技术分享  

  

1 min 之后:

技术分享  

 

2 min 之后:

技术分享

  

浏览文件:

技术分享  

 

 

 

如果要把日志按照年月放进不同的路径下,可以:

vim runlog.sh

 

runlog.sh:

LOGPATH=/usr/local/nginx/logs/dee.com.access.log
BASEPATH=/data/$(date -d yesterday +%Y%m)

mkdir -p $BASEPATH

bak=$BASEPATH/$(date -d yesterday +%d%H%M).dee.com.access.log

mv $LOGPATH $bak
touch $LOGPATH

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

技术分享  

保存退出。

 

此时,有了 201507 的目录:

技术分享  

 

目录下保存了最新的 log 文件,格式为:*日*时*分

技术分享  

  

Nginx 笔记与总结(5)访问日志管理:计划任务 + 日志切割

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4677697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!