<!-- wp:quote -->

<p>nginx定时任务完成日志切割</p>
<!-- /wp:quote --> <!-- wp:more --> <!-- /wp:more --> <!-- wp:tadv/classic-paragraph --> <h2>按天备份</h2> <!-- /wp:tadv/classic-paragraph --> <!-- wp:paragraph --> <p>编辑nginx.conf配置文件</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph -->
    server{
        listen 777;
        server_name localhost;

        location / {
                root html;
                index 777.html;
        }
        access_log logs/777.access.log main;
}

<p>我们可以看到这个端口为777的网站,日志在logs目录下的777.access.log里面。我们要的目的是每天定时给我们把这个日志切割掉。</p>
<p>根据日期来存储日志的话就要看看昨天的日期:</p>

date -d yesterday
2019年 12月 16日 星期一 11:54:23 CST

<p>然后修改日期的显示格式,不要这种年月日:</p>

date -d yesterday +%Y%m%d
20191216

<p>当我们得到这样的值之后我们就需要写一个shell脚本:</p>

[root@localhost nginx]# mkdir /data
[root@localhost nginx]# cd /data/
[root@localhost data]# ls
[root@localhost data]# vim runlog.sh

<p>如果你不会写脚本可以跟着我一点一点来:</p>

#|/bin/bash 
echo date -d yesterday +%Y%m%d

<p>写上上面的内容,然后执行一下看看:</p>

[root@localhost data]# bash runlog.sh 
2019121

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>我们现在把我们的脚本完善一下,用日期做名字:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->

#|/bin/bash
LOGPATH=/usr/local/nginx/logs/777.access.log
BASEPATH=/data
bak=$BASEPATH/date -d yesterday +%Y%m%d%H%M.777.access.log
echo $bak

<p>这里第一个就是说我们的文件引用的是/usr/local/nginx/logs/777.access.log,然后第二个BASEPATH说的是备份的目录,第三行说的就是以日期命名,最后输出一个这个bak变量,我们看看这个脚本运行的结果:</p>

[root@localhost data]# bash runlog.sh 
/data/201912161220.777.access.log

<p>这是没有问题的,精确到了分钟。因为做实验的关系我们想看看效果,最终我们脚本需要这样完善一下:</p>

#|/bin/bash
LOGPATH=/usr/local/nginx/logs/777.access.log
BASEPATH=/data
bak=$BASEPATH/date -d yesterday +%Y%m%d%H%M.777.access.log
#echo $bak
mv $LOGPATH $bak
touch $LOGPATH
kill -USR1 cat /usr/local/nginx/logs/nginx.pid

<p>这样就OK了,但是我们还要让他每分钟都执行一次:</p>

crontab -e
<p>然后输入下面的内容:</p>
/1    * sh /data/runlog.sh
<p>这样就是说每分钟执行一次。</p> <p>这样我们每过一会就能看到:</p> <p></p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:paragraph --> <p>这样就满足了我们每天都要备份的需求,那么每个月备份一次呢?</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph --> <h2>按月备份</h2> <!-- /wp:tadv/classic-paragraph --> <!-- wp:paragraph --> <p>我们直接看脚本内容:</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph -->
#|/bin/bash
LOGPATH=/usr/local/nginx/logs/777.access.log
BASEPATH=/data/date -d yesterday +%Y%m
mkdir -p $BASEPATH
bak=$BASEPATH/date -d yesterday +%d%H%M.777.access.log
#echo $bak
mv $LOGPATH $bak
touch $LOGPATH
kill -USR1 cat /usr/local/nginx/logs/nginx.pid

<p>这样就完成了脚本内容,我们会让这些日志按月自动创建一个目录,然后备份起来。</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<!-- /wp:tadv/classic-paragraph -->

最后修改:2020 年 02 月 28 日 06 : 51 PM
请俺喝杯咖啡呗