环境:centos7 nginx1.16.1

一、分割及备份的目的

    nginx默认将日志信息写在一个文件中,时间一久日志文件中条目越来越多,文件越来越大,不方便查看,备份的时候也不需要备份重复的信息,故需分割日志,将日志按小时,

  天,周...分割,写到不同的日志文件中。

二、实现原理

通过linux自定义脚本,完成日志的分割和备份,使用定时任务,实现自动备份。

三、代码实现

  1. 在Linux上创建脚本文件runlog.sh。写入如下代码:

#!/bin/bash
base_path='/usr/local/nginx/logs/' #日志文件目录
log_name='fanshehu.access.log' #日志文件名
log_path_y=$(date -d yesterday '+%Y' )
log_path_md=$(date -d yesterday '+%m%d')
log_path_hms=$(date -d yesterday '+%H%M%S')
mkdir -p /date/nginx_logs/$log_path_y/$log_path_md #创建备份目录
mv $base_path$log_name /date/nginx_logs/$log_path_y/$log_path_md/$log_path_hms-$log_name #移动日志
touch $base_path$log_name #生成新日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #nginx重读配置文件

   2. 设置Linux定时任务:

    作用:自动执行脚本,实现日志的分割备份

    cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务,crond是定时服务的守护进程

(1) 启动服务:

      systemctl /start/stop/restart/reload/status  crond

     (2) 设置定时任务类容:

      crontab -e  #此方式的定时任务用户是当前登录linux用户,加入如下代码

      */1 12-23 * * * /home/sh/runlog.sh  #每天12-23时期间,每分钟执行一次

      注意:脚本其它用户要有可执行权限,目录要有读权限

      drwxrw-rw-   3 root root  4096 Nov 21 17:10 date  

      -rwxr-xr-x 1 root root 469 Nov 21 17:00 runlog.sh

     (2) 设置开机自启:

      vim /etc/rc.d/rc.local或vim /etc/rc.local  #它们是一个文件,此文件中的命令在用户登录前便会执行。在文件中加入如下代码:

      /bin/systemctl start crond.service

四、Linux定时任务

    1. linux启动流程:

      

(2)相关命令

        crontab -l  #查看当前用户的定时任务列表

        crontab -e  #编辑当前用户的定时任务

        crontab -r  #删除当前用户的所有定时任务

        crontab -u  #设定定时任务的用户

        tail /var/log/cron  #查看定时任务日志

     (4)定时任务格式

*   *  *  *  *  [用户] 命令   #用户是cron服务的用户,命令一般是.sh脚本,*表示每        

分钟   小时   日    月     星期

(0-59)(0-23)(1-31)(1-12)(0-6)  

例:

0,30 18-23 * * *  18:00-23:00间每小时0分和30分钟执行

0 23 * * 6          星期6,23:00执行

* */1 * * *         每小时执行

* 23-7/1 * * *     23:00-7:00间每小时执行

0 4 1 jan *         一月一号4:00

0 0 10-20 * *     10号~20号,每天00:00执行

注意事项:

  1. 日志备份目录有可写权限

2. 脚本其他用户有可执行权限,755

nginx日志分割及备份的更多相关文章

  1. nginx 日志分割(简单、全面)

    Nginx 日志分割 因业务需要做了简单的Nginx 日志分割, 第1章 详细配置如下. #建议在mkdir  /home/shell  -p 专门写shell 脚本位置 root@localhost ...

  2. linux中使用corntab和shell脚本自动备份nginx日志,按天备份

    编写shell脚本,实现nginx日志每天自动备份到指定文件夹! 需要的命令mv , corntab -e(定时任务),shell脚本 这里先说一下corntab: https://www.cnblo ...

  3. logrotate 进行nginx日志分割

    http://www.williamsang.com/archives/1254.html 日志分割常用方法: 自己写脚本分割 使用linux自带的logrotate 前者灵活,可以应对各种需求,自定 ...

  4. nginx日志分割配置实例

    Nginx没有类似Apache的cronolog日志分割处理的功能,但是,可以通过nginxNginx的信号控制功能利用脚本来实现日志的自动切割.请看下面的一个实例.Nginx对日志进行处理的脚本: ...

  5. nginx日志分割总结

    nginx日志自己不会进行分个,所有日志都会累积的记录在 access.log,error.log 中,当请求量大,一天就能到几百兆,如果不进行分给,对日志的查看和写入性能都有影响. 1. 编写脚本n ...

  6. 使用logrotate做nginx日志分割

    版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=266 背景 nginx是一款非常优秀的网络代理工具,但是其日志管理有点缺憾:nginx的access_log会无 ...

  7. nginx日志分割小脚本

    nginx的日志一直是写在一个文件上面,运行久了之后文件会非常大,因此我们有必要对nginx的日志进行分割:   1 2 3 4 5 6 7 8 9 10 11 #! /bin/bash ACCESS ...

  8. nginx日志分割脚本

    [root@localhost nginx]# cat logs/nginx.pid 5118[root@localhost nginx]# kill -QUIT 5118-QUIT : 关闭进程-H ...

  9. nginx 日志分割

    利用 crontab + shell 来实现nginx的 access log 按天切割,便于统计.具体实现如下: shell: #! /bin/sh NGINX_DIR=/data/apps/ngi ...

随机推荐

  1. nginx 服务端口权限13的问题

    参考此文:https://blog.csdn.net/RunSnail2018/article/details/81185138

  2. 【java】isEmpty VS isBlank 的区别

  3. [学习笔记] 网络最大流的HLPP算法

    #define \(u\)的伴点集合 与\(u\)相隔一条边的且\(u\)能达到的点的集合 \(0x00~ {}~Preface\) \(HLPP(Highest~Label~Preflow~Push ...

  4. Oracle--RMAN Recover 缺失的归档操作

    一,环境简介 Oracle RMAN 备份的恢复分2个步骤:RESTRE 和 RECOVER.在这里回复的时候是依赖者归档文件的,当周一完成数据全备,保留归档的情况下,后期数据有问题,恢复的时候发现少 ...

  5. 在linux上安装taiga

    # taiga 安装配置 1.简介 本文档介绍了如何部署完整的Taiga服务(每个模块都是Taiga平台的一部分). Taiga平台由三个主要组件组成,每个组件在编译时和运行时都有自己的依赖关系: t ...

  6. Java8 新特性 Stream 练习实例

    练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...

  7. Blackbox_exporter黑盒监测

    一.概述 blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http.dns.tcp.icmp 的监控数据采集.Blackbox_exporter ...

  8. windows环境下 mysql 忘记root密码时的解决办法

    1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\MySQL Serv ...

  9. Layui 时间转换时间戳

    我比较喜欢用Layui,当然也遇到一些坑!例如:绑定时间的时候是那种 是这种13位数据的日期,如果不经过转换是不能正常显示的,当然这是我遇到的问题不知道你们有没有遇到,后来我也是经过了解才知道怎么回事 ...

  10. 使用Nginx反向代理Docker的Asp.Net Core项目的请求

    承接上文的对Kestrel的思考 上一篇介绍了如何一下在docker中发布Asp.Net Core项目(传送门)在最后尝试从外网访问网站的时候发现请求的响应头中包含了这个信息Server:Kestre ...