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