加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

每日一shell(八)nginx日志切割

发布时间:2020-12-15 19:55:03 所属栏目:安全 来源:网络整理
导读:nginx日志会随着访问量而变大,较大的日志会影响分析日志时对日志的分析和处理,我们可以使用shell对nginx日志进行定时分割,以周或者天,对于时间久的日志可以定时删除,减小磁盘的浪费 代码: # cat logrotate.sh #!/bin/bash#rotate nginx logs#writen by

nginx日志会随着访问量而变大,较大的日志会影响分析日志时对日志的分析和处理,我们可以使用shell对nginx日志进行定时分割,以周或者天,对于时间久的日志可以定时删除,减小磁盘的浪费

代码:

# cat logrotate.sh 

#!/bin/bash
#rotate nginx logs
#writen by Aiker
PATH=$PATH://usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
logs_path=/var/log/nginx
d=$(date -d "-1 day" +%F)
mv $logs_path/access.log $logs_path/access_${d}.log
mv $logs_path/error.log $logs_path/error_${d}.log
#向nginx主进程发送USR1信号重新打开日志文件
kill -USR1 $(cat /var/run/nginx.pid)

针对多个日志的切割:

#!/bin/bash
#rotate nginx logs
#writen by Aiker
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
logs_path=/var/log/nginx
d=$(date -d "-1 day" +%F)
cd ${logs_path}
for logs in `ls *.log`
    do
        mv $logs $logs-$d
done

#向nginx主进程发送USR1信号重新打开日志文件也可以:/bin/kill -HUP `cat $nginx_pid`
kill -USR1 $(cat /var/run/nginx.pid)

定时切割日志:
crontab -e

0 0 * * 0 /root/script/logrotate.sh > /dev/null 2>&1
# ll /var/log/nginx/                         
total 64
-rw-r--r-- 1 nginx root  3205 Feb 12 11:42 access_2018-02-11.log
-rw-r--r-- 1 nginx root 41951 Feb 12 11:53 access.log
-rw-r--r-- 1 nginx root 14441 Feb  9 10:12 error_2018-02-11.log
-rw-r--r-- 1 nginx root     0 Feb 12 11:43 error.log

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读