Nginx日志切割清理

一、实现原理

利用shell脚本将当天的日志文件剪切到指定目录,然后nginx使用新的日志文件重新记录日志,定时任务利用linux自带的crontab定时器实现定时自动触发。

二、脚本开发

创建脚本文件如nginx_log_cut.sh,将下面的文件内容复制到文件中保存。

#!/bin/bash
# nginx的安装目录
NG_HOME=/usr/local/nginx
# nginx成功日志的文件名
ACCESS_NAME=access.log
# nginx失败日志的文件名
ERROR_NAME=error.log
# 保存历史日志的地方
LOGS_PATH=$NG_HOME/logs/loghistory
# 创建日志保存路径
mkdir -p $LOGS_PATH
# 获取当前时间戳
FILEDATE=$(date +%Y%m%d_%H%M%S)
# 切割日志
mv $NG_HOME/logs/$ACCESS_NAME $LOGS_PATH/nginx_${ACCESS_NAME}_${FILEDATE}.log
mv $NG_HOME/logs/$ERROR_NAME $LOGS_PATH/nginx_${ERROR_NAME}_${FILEDATE}.log

# nginx日志重开,若缺少该命令,则nginx新的日志不会在新文件中生成
$NG_HOME/sbin/nginx -s reopen

# 清理过期日志(修改时间为30天之前的,文件类型为log的)
find $LOGS_PATH -maxdepth 1 -type f -name '*.log' -mtime +30 | xargs rm -rf

echo 'the log process complete!'

如果需要对日志文件进行压缩,可自行添加文件压缩命令

三、创建定时任务

打开crontab定时器

crontab -e

在文件中添加定时任务配置,如

0 13 */1 * * /usr/local/nginx/logs/nginx_log_cut.sh

cron表达式可自行百度格式,0 13 */1 * * 表示每天13:00时执行该定时任务,执行nginx_log_cut.sh脚本

重启定时器

systemctl restart crond

如果需要设置crond为开机启动

chkconfig crond on

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值