linux 日志切割 自带,[日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割...
logrotate日志分割配置:
# cat /etc/logrotate.d/nginx
/data/nginx_logs/*.access_log ? ? ? ? #nginx日志所在目錄
{
nocompress ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #不對日志文件進行轉儲壓縮
daily ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #指定轉儲周期為每天
copytruncate ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #用于還在打開中的日志文件,把當前日志備份并截斷
create ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#建立新的日志文件
ifempty ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#即使是空文件也轉儲
olddir /data/nginx_logs/days ? ? ? ? ? ?#轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
rotate 0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5個備份
}
#####################################################################
日志分割腳本:
#!/bin/bash
#創建轉儲日志壓縮存放目錄
mkdir -p /data/nginx_logs/days
#手工對nginx日志進行切割轉換
/usr/sbin/logrotate -vf /etc/logrotate.d/nginx
#當前時間
time=$(date -d “yesterday” +”%Y-%m-%d”)
#進入轉儲日志存放目錄
cd /data/nginx_logs/days
#對目錄中的轉儲日志文件的文件名進行統一轉換
for i in $(ls ./ | grep “^\(.*\)\.[[:digit:]]$”)
do
mv ${i} ./$(echo ${i}|sed -n ‘s/^\(.*\)\.\([[:digit:]]\)$/\1/p’)-$(echo $time)
done
#對轉儲的日志文件進行壓縮存放,并刪除原有轉儲的日志文件,只保存壓縮后的日志文件。以節約存儲空間
for i in $(ls ./ | grep “^\(.*\)\-\([[:digit:]-]\+\)$”)
do
tar jcvf ${i}.bz2 ./${i}
rm -rf ./${i}
done
#只保留最近7天的壓縮轉儲日志文件
find /data/nginx_logs/days/* -name “*.bz2” -mtime 7 -type f -exec rm -rf {} \;
######################################################
#給腳本附上執行權限,放到crontab里執行
#logrotate
0 0 * * * /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1
總結
以上是生活随笔為你收集整理的linux 日志切割 自带,[日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mrc20温控f1什么意思_温控器的“总
- 下一篇: 红帽Linux7怎么修改网卡名称,新安装