环境: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

最新文章

  1. 初识Opserver,StackExchange的监控解决方案
  2. eclipse导入PIL报错
  3. C语言的基本输入与输出函数
  4. zw版【转发·台湾nvp系列Delphi例程】HALCON GenGridRegion
  5. HTML5 学习笔记--------》HTML5概要与新增标签!
  6. 织梦DedeCMS"当前位置"去除最后一个 > 符号的方法
  7. Careercup - Google面试题 - 4807591515389952
  8. Python import / pyd / dll
  9. 平衡工作与生活的艺术——GTD简单介绍
  10. 剑指offer 练习题目
  11. qt中的事件机制
  12. VMware启动时提示我已移动或我已复制该虚拟机
  13. 把JavaScript对象转化成JSON对象
  14. UWP作业(一)XAML Controls Gallery
  15. nginx的锁
  16. 02Linux环境配置
  17. sysroot和prefix
  18. 【剑指offer】二进制中1的个数
  19. 关于上级机构的冲突性测试bug修复
  20. Python操作Saltstack

热门文章

  1. oracle左连接与右连接
  2. 几个简单js,普通写法和高逼格写法比较
  3. cf1039D 分块
  4. 【Comet OJ - Contest #0 A】解方程(数学水题)
  5. [LeetCode] 483. Smallest Good Base 最小的好基数
  6. IDEA中阿里P3C插件的安装与使用
  7. 说清楚,5G SA和NSA到底有啥区别?
  8. 前后台$.post交互并返回JSON对象
  9. maven集成命令-U -B -P -e -X
  10. 论文阅读: VITAMIN-E: Extremely Dense Feature Points