centos下日志定时切割删除日志(nginx例子)

nginx日志切割与定时任务删除

运作原理: 编写一个脚本,脚本的核心内容为一、移动nginx的日志文件并修改其名称。二、将七天前的日志文件删除(这里的天数可以改成一天,方便测试)。最后做个定时任务,将编写的脚本加入定时任务(将脚本文件设置为每天的某个时间执行),就能完成定时切割删除日志的功能。

具体操作

编写切割删除脚本
vim /data/log/new.sh (新建一个shell脚本文件)

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs_backup_path="/data/log/nginx_log"               #日志存储路径(切割下来的日志存放地,同时也是删除日志要去的地方)

logs_path="/usr/local/nginx/logs/"                   #要切割的日志路径(nginx下的日志存放地)
logs_access="access"                                 #要切割的日志(access日志和error日志)
logs_error="error"
pid_path="/usr/local/nginx/logs/nginx.pid"                    #nginx的pid

#[ -d $logs_backup_path ]||mkdir -p $logs_backup_path 
rq=`date +%Y-%m-%d`                                  #获取当天日期并赋给
#mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log
mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log  
#mv为移动nginx的日志并修改名称为当天日期
find /data/log/nginx_log/ -name "*.log" -type f -mtime +1 -exec rm -rf {} \; > /dev/null 2>&1   #删除1天前的日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)            #重启nginx                                                                                                                                                                                                                                                                                                        

保存退出

编写定时任务

#crontab -e (添加定时任务)

46 10 * * * sh /data/log/new.sh    

在 10:46执行/data/log目录下的new.sh脚本
重启crond

systemctl restart crond

最后修改时间,进行测试,nginx日志切割删除完成。
(如果不成功,或者有报错,可以将问题发在下方评论)

CentOS下,可以使用logrotate工具来进行日志切割。 1. 安装logrotate 如果你的系统中没有安装logrotate,可以使用以下命令进行安装: ``` sudo yum install logrotate ``` 2. 创建日志切割配置文件 在/etc/logrotate.d/目录下创建一个新的配置文件,例如mylog: ``` sudo nano /etc/logrotate.d/mylog ``` 在该文件中,你可以指定需要切割日志文件、切割的频率、保留的备份文件数等参数。以下是一个示例配置文件: ``` /var/log/mylog.log { daily rotate 7 compress delaycompress missingok notifempty create 644 root root } ``` 解释一下各个参数的含义: - daily:表示每天切割一次日志文件。 - rotate 7:保留最近7个备份文件。 - compress:使用gzip进行压缩。 - delaycompress:在下一次切割时才进行压缩。 - missingok:如果日志文件不存在,也不报错。 - notifempty:如果日志文件为空,也不切割。 - create 644 root root:在切割后创建一个新的空日志文件,并设置权限为644,属主为root。 3. 测试日志切割配置 可以使用以下命令来测试配置文件是否正确: ``` sudo logrotate -d /etc/logrotate.d/mylog ``` 该命令会模拟执行日志切割操作,并输出详细的日志信息。如果没有错误提示,则说明配置文件正确。 4. 自动化日志切割 默认情况下,logrotate会自动执行/etc/cron.daily/logrotate脚本,该脚本会对所有在/etc/logrotate.d/目录下找到的配置文件进行日志切割。因此,你无需手动执行日志切割命令,logrotate会自动按照配置文件进行切割
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值