环境: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. dl-google.com 的问题

    印象里,如果用过公司vpn之后,再用android studio, 这个地址就能被解析下载了. 看来,应该只是域名被屏蔽,ip并没有. 所以,以后拿到ip之后,写进hosts里应该没事 https:/ ...

  2. T430 Linux Setting Memo

    touchpad:xinput listxinput --disable 11 dns setting:/etc/resolv.conf vpn:@Darkduck19XX yum-config-ma ...

  3. linux数据库中使用MD5加密

    MD5加密算法源码下载:https://pan.baidu.com/s/1nwyN0xV 下载完成了之后解压,得到两个文件 环境搭建: 1.把md5.h文件拷贝到/usr/include/目录下 su ...

  4. MySQL实战45讲学习笔记:第十四讲

    一.引子 在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数.这时候你可能会想,一条 select count(*) from t 语句不就解决了吗? 但是,你会发现 ...

  5. Salesforce 开发整理(八)PDF打印相关

    一:基础设置 Salesforce中的PDF页面本质上还是Visualforce[简称VF]页面,所以只需要给VF页面加上一个属性[renderAs="pdf"] 即可生成一个PD ...

  6. 2018-2019-2 20162329 《网络对抗技术》Exp9: Web安全基础

    目录 Exp9: Web安全基础 一.基础知识 1.SQL注入攻击 2.XSS跨站脚本攻击 3.CSRF跨站请求伪造 二.SQL注入 1. 命令注入 2. 数字注入 3. 日志欺骗 三.XSS攻击 1 ...

  7. 二进制安装K8S集群V1.16.3

    centos linux7.5 cat > /etc/hosts << EOF 192.168.199.221 master 192.168.199.222 node1 192.16 ...

  8. 解决Spring Cloud中Feign第一次请求失败的问题

    在Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题 com.netflix.hystrix.exception.HystrixTimeoutE ...

  9. ASP.NET的MVC请求处理流程

    1.用户打开浏览器,在地址栏输入某个网址的URL并回车,浏览器便开始像该URL指定的服务器发起HTTP请求 .2.服务器的网站服务系统(IIS)接收到该请求,先检查自己是否认识该类请求,如果认识就直接 ...

  10. fiddler抓包-2-5分钟学会手机端抓包

    前言 小伙伴们在前篇是否学会了简单的电脑web或其它软件抓包了呢?今天小编给大家带来的是fiddler设置手机代理抓手机端的数据包. 大致流程如下: 1.准备一台wifi功能正常的真机或虚拟机:2.设 ...