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


广告:

之前在国内用合租主机的时候,服务商都会每天提供日志的压缩备份下载。有时候有什么事,查起来也方便。后来,用上了国外的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”

发表评论

电子邮件地址不会被公开。 必填项已用*标注