nginx日志按日期分割

本文介绍了如何编写一个Linux shell脚本来在每天0点将Nginx访问日志按日期重命名并备份,同时通过发送USR1信号让Nginx进程重新打开日志文件。此外,还讲解了配置crontab定时任务来自动执行这个脚本,确保日志管理的自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

日志替换脚本:


#!/bin/bash
##零点执行该脚本

##Nginx日志文件所在的目录
LOGS_PATH="日志文件夹路径"

##获取昨天的yyyy-MM-dd
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

##移动文件
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log

##向Nginx主进程发送USR1信号,USR1信号是重新打开日志文件
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`

##kill -USR1 $(cat /nginx安装目录/nginx.pid)  #通知nginx重新生成新的日志

##删除7天前的日志
cd ${LOGS_PATH}
find . -mtime +7 -name "access_*" | xargs rm -f

exit 0


日志替换定时器

crontab -e 在里面输入如下内容:(每晚0点1分执行日志分割,注意中间的空格,如果该命令找不到crontab文件选用下列方式修改即可)

1 0  * * * /bin/sh /脚本路径.sh

 

如果上面命令找不到文件地址可使用如下 命令查找crontab 文件进行修改:

vim /etc/crontab在最后一行添加

1 0  * * * /bin/sh /脚本路径.sh

重新启动crond使设置生效

/etc/rc.d/init.d/crond restart   #yum install -y vixie-cron 安装计划任务,某些系统上可能没有预装需要执行此操作进行安装
chkconfig crond on #设为开机启动
service crond start #启动
如果直接复制的话,要注意字体编码的问题,很多windows上的脚本上传到linux就出错,还是因为编码问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值