要在第二天的凌晨把前一天的访问日志切割备份,并以时间作为文件名,例如:access.20150728.log,这就需要在 Linux 中格式化时间,例如:

[root@localhost ~]#  date
2015年 07月 28日 星期二 02:33:02 CST [root@localhost ~]# date -d yesterday
2015年 07月 27日 星期一 02:33:18 CST [root@localhost ~]# date -d yesterday +%Y
2015 [root@localhost ~]# date -d yesterday +%y
15 [root@localhost ~]# date -d yesterday +%Y%m%d
20150727

编写 shell 脚本

在根目录下创建 data 目录,用于存放 shell 脚本

mkdir /data

进入 /data 目录,创建 runlog.sh:

cd /data
vim runlog.sh

【测试】 .sh 文件:

echo `date -d yesterday +%Y%m%d`

或者

[root@localhost data]# vim runlog.sh
echo $(date -d yesterday +%Y%m%d)

  

保存退出

  

然后运行该脚本:

[root@localhost data]# sh runlog.sh
20150727

测试结束。

【测试2】

输出备份后的文件路径

vim runlog.sh

runlog.sh:

[root@localhost data]# vim runlog.sh

bak=$BASELOG/$(date -d yesterday +%Y%m%d)
LOGPATH=/usr/local/nginx/logs/dee.com.access.log
BASELOG=/data bak=$BASELOG/$(date -d yesterday +%Y%m%d%H%M).dee.com.access.log
echo $bak

保存退出。

运行 runlog.sh :

[root@localhost data]# sh runlog.sh
/data/201507270317.dee.com.access.log

测试结束。

定义了备份后的文件路径之后,需要把原来的日志文件剪切到新的路径,同时新建一个访问日志文件,最后使用 nginx 信号控制中的 USR1 来完成日志切割:

vim runlog.sh

runlog.sh:

LOGPATH=/usr/local/nginx/logs/dee.com.access.log
BASELOG=/data bak=$BASELOG/$(date -d yesterday +%Y%m%d%H%M).dee.com.access.log mv $LOGPATH $bak
touch $LOGPATH kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

  

保存退出。

创建计划任务(每分钟执行 1 次):

crontab -e

*/1 * * * * sh /data/runlog.sh

保存退出。

此时 /data 目录下的文件:

  

  

1 min 之后:

  

2 min 之后:

  

浏览文件:

  

如果要把日志按照年月放进不同的路径下,可以:

vim runlog.sh

runlog.sh:

LOGPATH=/usr/local/nginx/logs/dee.com.access.log
BASEPATH=/data/$(date -d yesterday +%Y%m) mkdir -p $BASEPATH bak=$BASEPATH/$(date -d yesterday +%d%H%M).dee.com.access.log mv $LOGPATH $bak
touch $LOGPATH kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

  

保存退出。

此时,有了 201507 的目录:

  

目录下保存了最新的 log 文件,格式为:*日*时*分

  

  

Nginx 笔记与总结(5)访问日志管理:计划任务 + 日志切割的更多相关文章

  1. 『学了就忘』Linux日志管理 — 92、日志轮替

    目录 1.日志文件的命名规则 2.logrotate配置文件说明 3.logrotate配置文件的主要参数 1.日志文件的命名规则 日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志 ...

  2. 【Java EE 学习 76 下】【数据采集系统第八天】【通过AOP实现日志管理】【日志管理功能分析和初步实现】

    一.日志管理相关分析 1.日志管理是一种典型的系统级别的应用,非常适合使用spring AOP实现. 2.使用日志管理的目的:对系统修改的动作进行记录,比如对权限.角色.用户的写操作.修改操作.删除操 ...

  3. mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)

    日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 ,事务日志. 修改配置或者想要使配置永久生效需将内容写入配置文 ...

  4. 『学了就忘』Linux日志管理 — 91、日志服务rsyslogd说明

    目录 1.日志文件格式 2.rsyslogd服务的配置文件 (1)rsyslog.conf文件内容 (2)rsyslog.conf配文件内容说明 (3)定义自己的日志 1.日志文件格式 只要是由日志服 ...

  5. 『学了就忘』Linux日志管理 — 93、日志轮替补充

    目录 1.把自己的日志加入日志轮替 (1)操作方式 (2)示例 2.logrotate命令 1.把自己的日志加入日志轮替 使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你 ...

  6. MySQL 之 innodb 日志管理 -- 1. 基本日志文件

    1.基本日志文件分类 错误日志(error log) 慢查询日志日志(slow query log) 二进制日志(binlog) 查询日志(general log) 2.错误日志 主要包括mysql的 ...

  7. 循序渐进nginx(三):日志管理、http限流、https配置,http_rewrite模块,第三方模块安装,结语

    目录 日志管理 access_log error_log 日志文件切割 自定义错误页 http访问限流 限制请求数 语法 使用 限制连接数 语法 测试 补充: https配置 使用 生成证书 配置ng ...

  8. 基于吉日嘎底层架构的Web端权限管理操作演示-日志管理

    权限管理要实现的效果是对“ 谁”可以访问“什么内容”,可以进行“哪些操作” 一系列权限的精细化控制.衡量一个软件好坏的重要标准是:它的权限体系是否足够细致.是否可以立体勾勒出信息对象的访问控制.前面4 ...

  9. monkey及其的日志管理和分析

    1.   monkey 1.1.  介绍 通过monkey程序模拟用户触摸屏幕,滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,检查和评估被测程序的稳定性 ...

  10. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 .日志服务 在CentOS .x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服 ...

随机推荐

  1. MakeFile中赋值

    Makefile 中:= ?= += =的区别   在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为 ...

  2. Codeigniter CRUD代码快速构建

    一个与数据库操作打交道的应用,必然涉及到数据的添加.修改.删除等操作.因此CRUD操作几乎成为每个后台管理站点的必备功能.数据库的复杂性,导致PHP操作代码也会有不少的冗余,因此,如果可以有工具自动生 ...

  3. Eclipse中项目面板字体的修改

    修改eclipse安装目录中的如下文件,添加黄色标记部分,并设定自己需要的字体大小(这里是10px)即可: \eclipse\plugins\org.eclipse.ui.themes_1.1.1.v ...

  4. WSGI服务器实践二--实践一个基本功能的WSGI服务器

    由于各种PYTHON框架都实现了WSGI接口,所以,通用性很广的. 在调试过程过,有一个字母拼错,搞了一个小时. 看来PYTHON自带的编辑器没有高亮,不爽. 在有提示的编辑器里一看就看了来啦..:) ...

  5. poj 2082 单调栈 ***

    和poj2082差不多,加了一个宽度的条件 #include<iostream> #include<string> #include<cmath> #include ...

  6. hdu 4398 STL

    题意描述半天描述不好,直接粘贴了 Now your team is participating a programming contest whose rules are slightly diffe ...

  7. 解决Inno Setup制作安装包无法创建桌面快捷方式的问题

    转自:http://yedward.net/?id=104 昨天想把个java程序做成exe安装软件,然后就去下载了Inno Setup这个软件安装包制作软件,Inno Setup这个软件确实非常好用 ...

  8. C#学习笔记(五)——函数

    一.定义和使用函数. 直接通过例子进行说明吧 class Program { static void Write() { Console.WriteLine("Test output fro ...

  9. Linux常用命令_(基本命令)

    基本命令:ls.cd.pwd.man 1.ls 打印当前目录下的文件和目录文件 用法详解:: ls [-alFR] [文件或目录] -a 显示所有文件,包括隐藏文件:[root@qmfsun]#ls ...

  10. CodeForces 656B

    C - C Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status ...