定时切割 Nginx 日志

1、
crontab -e
00 00 * * * /usr/local/nginx/backlog1.0.pl  #添加定时任务
#!/usr/bin/perl
use strict;
use POSIX qw(strftime);
use File::Path;
use File::Copy;
my $dir = “/usr/local/nginx/”;
my $dir1 = “/usr/local/nginx/logs/”;
my $dirlog = $dir . “backlog”;
if(-e $dirlog){print “exist\n”;}else{mkpath $dirlog;}
my $time = strftime “%Y%m%d%H”, localtime(time);
my $oldtime = strftime “%Y%m%d%H”, localtime(time-345600);
&bakfile(“access.log”);
&bakfile(“error.log”);
sub bakfile
{
  my ($filename) = @_;
  my $orifile = $dir1 . $filename;
  my $bakfile = $dirlog . “/$filename-“.$time;
  my $oldfile = $dirlog . “/$filename-“.$oldtime;
  #print “$orifile\n$bakfile\n$oldfile\n\n”;
  if(! -e $bakfile){copy($orifile,$bakfile)};
  unlink(“$oldfile”);
  system(“echo \”\” > $orifile”);
}
###################################################
2、
crontab -e
10 */2 * * * /usr/local/nginx/sbin/del_nginx-OS-logs.sh #添加定时任务
#!/bin/sh
/bin/cp /usr/local/nginx/logs/access.log /tmp/nginx-access_logs-`date +%s`
/bin/cp /usr/local/nginx/logs/error.log /tmp/nginx-error_logs-`date +%s`
true >/usr/local/nginx/logs/access.log
true >/usr/local/nginx/logs/error.log
find /tmp -name “nginx-access_logs-*” -mtime +4 -exec rm -f {} \;
find /tmp -name “nginx-error_logs-*” -mtime +4 -exec rm -f {} \;
####################################################
3、
crontab -e
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh >/dev/null 2>&1 #添加定时任务
#!/bin/bash
nginx_app=/usr/local/nginx/sbin/nginx #设置 nginx 的目录
logs_dir=/usr/local/nginx/logs/ #log 目录
bak_dir=/usr/local/nginx/logs/bak/ #log 备份目录
#先把现有的 log 文件挪到备份目录临时存放
cd $logs_dir
echo “moving logs”
/bin/mv *.log $bak_dir
sleep 3
#重建 nginx log
echo “rebuild logs”
echo “$nginx_app -s reopen”
$nginx_app -s reopen
#按天打包 log 文件
echo “begining of tar”
cd $bak_dir
/bin/tar zcf `date +%Y%m%d`.tgz *.log
#删除备份目录的临时文件
echo “rm logs”
rm -f *.log
echo “done”

原创文章,作者:赛福,如若转载,请注明出处:https://www.safecdn.cn/201.html

本站不销售、不代购、不提供任何支持,仅分享网络信息,请自行辨别,请遵纪守法、文明上网。