实现nginx每日自动分割并压缩日志的方法

五月 22, 2010

之前在国内用合租主机的时候,服务商都会每天提供日志的压缩备份下载。有时候有什么事,查起来也方便。后来,用上了国外的VPS,而且用的是nginx。上网查了一下,据说Apache是有提供日志分割压缩功能的,但是nginx就没有。后来通过上网搜索,发现方法还是有的,找到《通过shell+crontab实现自动分割nginx日志 》,通过文中的方法,就可以非常简单地对日志进行分割并压缩了。本文对《通过shell+crontab实现自动分割nginx日志 》文章中的方法进行了一点点的修改,主要是给access.log和nginx_error.log两个文件在文件名前面加上日期,方便以后大批量日志解压出来的时候分析使用的。

好,不多废话,下面就开始操作了:
1、用vi命令在/root文件夹内创建daily_logs.sh文件

-bash-3.2# vi /root/daily_logs.sh

2、输入以下内容:

#! /bin/bash
nginx_app=/usr/local/nginx
logs_dir=/home/wwwroot/logs/
bak_dir=/home/wwwroot/logs/bak/
 
cd $logs_dir
echo "moving logs"
/bin/mv *.log $bak_dir
sleep 3
 
echo "rebuild logs"
echo "$nginx_app -s reopen"
$nginx_app -s reopen
 
echo "begining of tar"
cd $bak_dir
/bin/tar czf `date +%Y%m%d`.tgz *.log
 
echo "rm logs"
rm -f *.log
echo "done"

3、给脚本加上执行权限:

-bash-3.2# chmod +x /root/daily_logs.sh

4、利用crontab命令定时执行:

-bash-3.2# crontab -e
0 0 * * * /root/daily_logs.sh

5、部分系统可能无法生效,可以重启crontab服务

-bash-3.2# service crond restart
nginx_app=/usr/local/nginx
logs_dir=/home/wwwroot/logs/
bak_dir=/home/wwwroot/logs/bak/

cd $logs_dir
echo “moving logs”
/bin/mv *.log $bak_dir
sleep 3

echo “rebuild logs”
echo “$nginx_app -s reopen”
$nginx_app -s reopen

echo “begining of tar”
cd $bak_dir
/bin/tar czf `date +%Y%m%d`.tgz *.log

echo “rm logs”
rm -f *.log
echo “done”

tags: ,
posted in VPS, VPS管理, 服务器 by 暗黑游侠

Follow comments via the RSS Feed | 留下评论 | Trackback URL

Leave Your Comment

[YCT:33] [YCT:32] [YCT:31] [YCT:30] [YCT:29] [YCT:28] [YCT:27] [YCT:26] [YCT:25] [YCT:24] [YCT:23] [YCT:22] [YCT:21] [YCT:20] [YCT:19] [YCT:18] [YCT:17] [YCT:16] [YCT:15] [YCT:14] [YCT:13] [YCT:12] [YCT:11] [YCT:10] [YCT:09] [YCT:08] [YCT:07] [YCT:06] [YCT:05] [YCT:04] [YCT:03] [YCT:02] [YCT:01]
 
首页 | Google | 百度 |  全部文章 |  关于我 | 
Creative Commons License
本博客采用创作共用协议,转载要求: 署名-非商业性使用-相同方式共享 3.0 Unported License
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org