环境:centos7 nginx1.16.1

一、分割及备份的目的

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

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

二、实现原理

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

三、代码实现

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

                #!/bin/bash

                LOGPATH=/usr/local/nginx/logs/blog.com.access.log   #日志文件位置

                bak=/date/nginx_log/$(date -d yesterday +%Y%m%d%H%m).blog.com.access.log   #备份的位置

                mv $LOGPATH $bak      #移动日志文件,并重命名

                touch $LOGPATH      #新建日志文件

      kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)    #收到USR1信号,nginx主进程重读配置文件

   2. 定时任务:自动执行脚本,实现日志的分割备份

                  systemctl /start/stop/restart/reload  crond

                  设置开机启动:在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start

            查看当前用户的定时任务:crontab –l

            查看日志 tail /var/log/cron

            编辑定时任务:crontab –e

            删除定时任务(全部):crontab –r

            编辑定时任务格式:

*   *   *  *    *  命令  #注意*间有空格

分钟   小时   日    月     星期

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

例:

0,30 18-23 * * *  18:00-23:00每间隔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

01-05 01:55
查看更多