zoukankan      html  css  js  c++  java
  • nginx日志分割及备份

    环境: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启动流程:

          转自http://c.biancheng.net/view/1023.html

                    (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

  • 相关阅读:
    求阴影部分的面积
    论语(原文注音, 注释, 译文, 评析) 打印版
    生肖故事
    北京大学2019年高等代数考研试题
    LaTeX技巧561:LaTeX如何让每一章带有目录?
    用 Mathematica 获取图片的 RGB 三基色
    tex 进度条
    跟锦数学190314
    Beamer 目录分栏
    Beamer 跳到另外一页
  • 原文地址:https://www.cnblogs.com/fanshehu/p/11905669.html
Copyright © 2011-2022 走看看