例子一、按日期切割nginx日志,并自动删除7天前的日志(日志均已同步至专用日志存储服务器,可放心删除历史日志。)
#!/bin/bash
#初始化
LOGS_PATH=/data/nginx/logs/www.domain.com
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#按天切割日志
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败.
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#删除7天前的日志
cd ${LOGS_PATH}
find . -ctime +7 -name "*20[1-9][3-9]*" | xargs rm -f
exit 0
将这个脚本添加到计划任务,每天执行一次即可:
1 0 * * * /usr/local/script/cut_del_logs.sh
此方法,网上一搜一大把,因此本文仅作为个人工作记录,并非教程,随便看看就行,别太在意。
例子2、按天分类存储并删除超过7天的日志
脚本内容:
#!/bin/bash
# a nginx access log segmentation shell script
cd /data/wslogs
log_dir="/data/wslogs"
time=`date +%Y%m%d`
nginx_dir="/usr/local/webserver/nginx"
#日志分割,按天分类
website=`ls $log_dir/access* | xargs -n 1 | cut -f 2 -d "."`
for i in $website
do
mkdir -p $log_dir/backup/$time/$i
mv $log_dir/access.$i.log $log_dir/backup/$time/$i/$time.log
done
$nginx_dir/sbin/nginx -s reload
#删除所有超过7天日志。
if [ "`date +%a`" = "Sun" ]; then
all_list=`ls $log_dir/backup | xargs -n 1`
for del in $all_list
do
let results=$time-$del
if [ $results -gt 7 ]; then
rm -fr $log_dir/backup/$del
fi
done
fi
需要注意的是:因为个人需要,Nginx访问日志命名格式必须是access.域名.log,例如:access.www_1987_com.log,域名中原来的点.必须换成其他字符,比如下划线_
代码中的一些位置参数可以根据自己需要修改,修改/etc/crontab文件,加入00 00 * * * root /data/logcron.sh,每天零点执行。
洋果子店rose最新版本
洋果子店最新版是一款十分容易让人垂涎的开店经营类手游。游戏玩
明日大亨最新版
明日大亨手游,一个非常经典有趣的模拟经营类型的商战手游,在游
早安我的少年日服最新版2024
早安我的少年日服是一款治愈恋爱手游,清新明亮的游戏画面,让你
我的世界基岩版1.16正式版
我的世界基岩版是一款模拟经营手游,游戏采用的是经典像素玩法,
早安我的少年最新版2024
早安我的少年是一款养成恋爱手游,在这款游戏中,玩家们将可以体