利用shell脚本按天分割并压缩nginx日志

我的服务器运行了十多个网站,有的访问高点的,日志都有几百M了,影响性能,虽然可以把access.log的地址设置成/dev/null来屏蔽日志,但是总觉不妥,现在通过一个脚本来按天分割并压缩日志。

我的网站的路径结构比较,如果网址是www.abc.com

那么我的网站的根目录是:/var/www/www.abc.com/html

而对应的日志的目录则是:/var/www/www.abc.com/logs

其脚本大致如下

#!/bin/basharray=("www.aaa.com" "www.bbb.com" "www.ccc.net"  "www.ddd.com")

for value in ${array[*]}

do

name="/usr/share/nginx/html/${value}/logs"

mkdir -p -m 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/access

mkdir -p -m 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/error

tar -zcvf ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/access/$(date -d "yesterday" +"%Y-%m-%d").tar.gz -C ${name}/ access.log

chmod 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/access/$(date -d "yesterday" +"%Y-%m-%d").tar.gz

: >${name}/access.log

tar -zcvf ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/error/$(date -d "yesterday" +"%Y-%m-%d").tar.gz -C ${name}/ error.log

chmod 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/error/$(date -d "yesterday" +"%Y-%m-%d").tar.gz

: >${name}/error.log

done

值得注意的是 ${array[*]}要写完整,如果只写${array},只能得到第一个值。

利用shell脚本按天分割并压缩nginx日志

相关文章:

你感兴趣的文章:

标签云: