welpher's blog

Nginx 日志切割

Nginx日志切割脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
#nginx access log segmentation script
#log directory
LOG_DIR="nginx log path"
TODAY=$(date +%Y%m%d --date="-1 day")
#log save days
LOG_SAVE_DAYS=15
cd $LOG_DIR
LOG_FILES=$(ls $LOG_DIR/*.log)
for file in $LOG_FILES
do
size=$(du -k ${file} | awk '{print $1}')
filename=$(basename ${file} .log)
#文件大于1M才会切割
if [ ${size} -gt 1000 ]
then
if [ ! -d ${LOG_DIR}/${filename} ]
then
mkdir ${filename}
fi
mv ${LOG_DIR}/${filename}.log ${LOG_DIR}/${filename}/${filename}-${TODAY}.log
fi
done
#delete old data
find ${LOG_DIR}/ -mtime +${LOG_SAVE_DAYS} -exec rm -rf {} \;
/etc/init.d/nginx reload

这个脚本配合crontab来执行就可以了,每天00:00执行

本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 许可协议进行许可