欢迎光临,赤鹿小组
记录过程,分享经验

Nginx日志文件的切割 shell 脚本

生产环境下为了防止单个日志文件过大,以及日志过大造成日志查询不便,所以,编者在生产环境下将日志文件进行切割,并按时清理周期的日志文件。以减小磁盘空间的压力,提高负责人对日志的查询以及方便日志文件的管理。

详细代码可前往github进行下载:https://github.com/Scirh/Shell-Script/blob/master/Nginx_Cut.sh

#!/bin/bash
# By Scong
# data:2019.01.10

# Nginx 日志目录
Logs_Path=/var/logs/nginx

# 7天前时间戳
Log_Date=$(date -d "yesterday" +%Y%m%d)

# 时间戳
Log_Date=$(date -d "yesterday" +%Y%m%d)

# 进入到 Nginx 日志文件目录下
cd ${Logs_Path}

# 日志数组
arr=(access.log error.log)

# 遍历数组
for file in ${arr[@]}
do

# 切割日志文件
    /bin/mv ${Logs_Path}${file} ${Logs_Path}${file}-${Log_Date}
# 压缩日志文件
    /bin/gzip ${Logs_Path}${file}-${Log_Date}
#        /usr/bin/rm ${Logs_Path}${file}-${day7}
done

# 可以使用“gzip -d xxxx.gz”进行解压

# 向Ngnix主进程发送USR1信号. USR1信号是重新打开日志文件
sudo /usr/bin/kill -USR1 `cat /run/nginx.pid`

# 删除7天的日志文件
find ${Logs_Path}  -type f -name '*.gz' -ctime +7  | xargs rm -rf
# find ${Logs_Path}  -type f -name '*.gz' -ctime +7 -exec rm -rf {} \;

# 配合Cron定时任务进行每天都日志分割

#0 0 * * * /bin/bash /data/sh/nginx_cut >> /var/logs/nginx_cut.log 2>&1
赞(0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址