环境: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. pytest--fixture

    前戏 fixture是在测试函数运行前后,由pytest执行的外壳函数.fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集.配置测试前系统的初始状态.为批量测试提供数据源等 ...

  2. select标签刷新后保持之前选择值

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <selec ...

  3. 后端设置Cookie前端跨域获取丢失问题(基于springboot实现)

    1.跨域问题说明:后端域名为A.abc.com,前端域名为B.abc.com. 2.后端设置一个cookie发送给前台,domain应该是setDomain(“abc.com”),而不是setDoma ...

  4. Linux三剑客入门

    grep文本过滤工具 grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令 语法: gr ...

  5. Visual Studio 调试系列11 远程调试

    系列目录     [已更新最新开发文章,点击查看详细] 你可以调试已部署在另一台计算机的 Visual Studio 应用程序. 要进行此操作,可使用 Visual Studio 远程调试器. 01 ...

  6. 2018-2019-2 20162329 《网络对抗技术》Exp7: 网络欺诈防范

    目录 Exp7: 网络欺诈防范 一. 基础问题回答 1. 通常在什么场景下容易受到DNS spoof攻击 二. 实验过程 1. 简单应用SET工具建立冒名网站 2. ettercap DNS spoo ...

  7. (五)golang--常用的一些玩意

    \t--制表位 \n--换行符 \\--一个\ \"--一个” \r--回车 行注释://,一次性注释多行指令,选中代码后ctrl+/ 块注释:/* */ 代码规范: (1)官方推荐使用行注 ...

  8. 深入理解C语言 - 指针使用的常见错误

    在C语言中,指针的重要性不言而喻,但在很多时候指针又被认为是一把双刃剑.一方面,指针是构建数据结构和操作内存的精确而高效的工具.另一方面,它们又很容易误用,从而产生不可预知的软件bug.下面总结一下指 ...

  9. AbstractExecutorService源码

    public class RunnableFutureTask { static FinalizableDelegatedExecutorService executorService = (Fina ...

  10. redis在项目中的应用

    redis在项目中的应用  ps:PHP 会自动 关redis连接 不需要手动关 对于临时的数据 可以不经过数据库直接redis上操作<pre>/*消息队列实例 消息队列详细步骤在http ...