我发现很多人的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮子,这真是让人沮丧啊!就好比明明身边躺着现成的性感美女,大家却忙着自娱自乐,罪过!

Logrotate的介绍

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。
显而易见,Logrotate是基于CRON来运行的,其脚本是「/etc/cron.daily/logrotate」:
  1. [caoxiaojian@web1 etc]$ cat /etc/cron.daily/logrotate
  2. #!/bin/sh
  3. /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
  4. EXITVALUE=$?
  5. if [ $EXITVALUE != 0 ]; then
  6. /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
  7. fi
  8. exit 0
实际运行时,Logrotate会调用配置文件「/etc/logrotate.conf」:
  1. [caoxiaojian@web1 etc]$ cat /etc/logrotate.conf
  2. # see "man logrotate" for details
  3. # rotate log files weekly
  4. weekly
  5. # keep 4 weeks worth of backlogs
  6. rotate 4
  7. # create new (empty) log files after rotating old ones
  8. create
  9. # use date as a suffix of the rotated file
  10. dateext
  11. # uncomment this if you want your log files compressed
  12. #compress
  13. # RPM packages drop log rotation information into this directory
  14. include /etc/logrotate.d
  15. # no packages own wtmp and btmp -- we'll rotate them here
  16. /var/log/wtmp {
  17. monthly
  18. create 0664 root utmp
  19. minsize 1M
  20. rotate 1
  21. }
  22. /var/log/btmp {
  23. missingok
  24. monthly
  25. create 0600 root utmp
  26. rotate 1
  27. }
  28. # system-specific logs may be also be configured here.
这里的设置可以理解为Logrotate的缺省值,当然了,可以我们在「/etc/logrotate.d」目录里放置自己的配置文件,用来覆盖Logrotate的缺省值。

Logrotate的演示

按天保存一周的Nginx日志压缩文件,配置路径为:/etc/logrotate.d,创建一个nginx的文件
  1. /usr/local/nginx/logs/*.log {
  2. daily
  3. dateext
  4. compress
  5. rotate 7
  6. sharedscripts
  7. postrotate
  8. kill -USR1 `cat /var/run/nginx.pid`
  9. endscript
  10. }
如果你等不及CRON,可以通过如下命令来手动执行:
  1. [caoxiaojian@web1 etc]$ logrotate -f /etc/logrotate.d/nginx
当然,正式执行前最好通过Debug选项来验证一下,这对调试也很重要:
  1. [caoxiaojian@web1 etc]$ logrotate -d -f /etc/logrotate.d/nginx

参数 功能

compress 通过gzip 压缩转储以后的日志
 
nocompress 不需要压缩时,用这个参数
 
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
 
nocopytruncate 备份日志文件但是不截断
 
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
 
nocreate 不建立新的日志文件
 
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
 
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
 
errors address 专储时的错误信息发送到指定的Email 地址
 
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
 
notifempty 如果是空文件的话,不转储
 
mail address 把转储的日志文件发送到指定的E-mail 地址
 
nomail 转储时不发送日志文件
 
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
 
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
 
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
 
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
 
daily 指定转储周期为每天
 
weekly 指定转储周期为每周
 
monthly 指定转储周期为每月
 
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
 
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
 
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

Logrotate的疑问

问题:sharedscripts的作用是什么?

大家可能注意到了,我在前面Nginx的例子里声明日志文件的时候用了星号通配符,也就是说这里可能涉及多个日志文件,比如:access.log和error.log。说到这里大家或许就明白了,sharedscripts的作用是在所有的日志文件都轮转完毕后统一执行一次脚本。如果没有配置这条指令,那么每个日志文件轮转完毕后都会执行一次脚本。

官方配置解析











Logrotate还有谁记得它??的更多相关文章

  1. [转] 被遗忘的Logrotate

    FROM : http://huoding.com/2013/04/21/246 我发现很多人的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相 ...

  2. 被遗忘的 Logrotate

    转自: http://huoding.com/2013/04/21/246 被遗忘的 Logrotate 发表于 2013-04-21 我发现很多人的服务器上都运行着一些诸如每天切分 Nginx 日志 ...

  3. 利用logrotate工具对catalina.out进行日志分割实战

    logrotate是linux自带的日志分割工具,如果没有可以用yum安装 yum -y install logrotate 要配置日志分割定时任务,需要在/etc/logrotate.d/下创建一个 ...

  4. QT,静态变量要记得初始化

    //DbUtil.h #ifndef DBUTIL_H #define DBUTIL_H using namespace std; QString md5Encode(QString passwd); ...

  5. 使用logrotate分割Tomcat的catalina日志

    切割catalian日志的方式有很多种,比如shell脚本的.cronolog或者通过配置log4j等等这些都可以实现.但今天我要介绍是使用logrotate来按日期生成日志. 原文是一个外国博主的文 ...

  6. c#静态构造函数 与 构造函数 你是否还记得?

    构造函数这个概念,在我们刚开始学习编程语言的时候,就被老师一遍一遍的教着.亲,现在你还记得静态构造函数的适用场景吗?如果没有,那么我们一起来复习一下吧. 静态构造函数是在构造函数方法前面添加了stat ...

  7. rsyslog及logrotate小结

    [root@node1 logrotate.d]# ls dracut haproxy httpd mcelog nginx ppp psacct syslog yum   yum install n ...

  8. 记得初学JS时候练个九九乘法表都写的要死要活

    还记得当初刚接触JS时候,看到视频中老师写了个九九乘法表,觉得好神奇,可是自己在下面动手写了半天还是有各种问题,甚是懊恼啊.今又看到园子里有关于乘法表的博文,出于对过去的不舍与缅怀,遂重写一遍. &l ...

  9. logrotate

    logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间. logrotate命令格式:logrot ...

随机推荐

  1. idea maven项目要想正常编译成war包,需要做的处理

    以及右键项目 - Build(第一次打包成war) (第一次Build) - ReBuild(非第一次打包成war)(非第一次Build) 按照顺序做一到几次,就可以成功编译成war包了(如果rebu ...

  2. 牛客网NOIP赛前集训营-提高组(第六场)B-选择题[背包]

    题意 题目链接 分析 直接背包之后可以 \(O(n)\) 去除一个物品的影响. 注意特判 \([p==1]\) 的情况. 总时间复杂度为 \(O(n^2)\) . 代码 #include<bit ...

  3. 矩阵分解-----LDL分解

    若一个矩阵A是正定的,那么该矩阵也可以唯一分解为\[{\bf{A = LD}}{{\bf{L}}^{\bf{T}}}\] 其中L是对角元素都为1的下三角矩阵,D是对角元素都为正数的对角矩阵.还是以三维 ...

  4. TPO-22 C1 Complain about a biased article

    /* 加粗:语音部分 * 红色:单词部分 * 斜体:语法部分 * 下划线:信号词/句 */ 第 1 段 1.Listen to a conversation between a student and ...

  5. 我看微软收购GitHub

    今天是微软收购GitHub的第三天,之前很多人担心被微软收购的GitHub会步Skype,诺基亚等企业的后尘,凡此种种我觉得更多人的担心是:GitHub不再开源免费罢了. GitHub今年4月刚成立十 ...

  6. python-GUI之tkinter的学习

    最近看了哔哩哔哩的python的学习,直接看代码吧,以后会更新 先来个基础的 import tkinter as tk #导入包 app = tk.Tk() #抽象出一个GUI app.title(& ...

  7. RabbitMQ和Kafka,更加便捷高效的消息队列使用方式,请放心食用

    一.RabbitMQ实例介绍RabbitMQ实例由华为云分布式消息服务(DMS)团队打造,实例采用物理隔离的方式部署,租户独占RabbitMQ实例.一键式部署,完全兼容开源RabbitMQ的使用方式, ...

  8. MyEclipse 和 eclipse 最简单的安装Jetty容器插件

    一.MyEclipse安装jetty 1.下载jetty插件  http://pan.baidu.com/s/1nuMYGNv 2.将下载后的jetty插件放到安装MyEclipse目录的MyEcli ...

  9. Openstack逻辑架构

    一. Keystone  -身份认证管理 提供了认证和授权的服务,openstack不同的组件通信都要经过授权,确保正确的用户和服务是经过认证的.并且它集成了大量的认证机制,比如用户名/密码和令牌/基 ...

  10. Burp Suite pro 抓包工具配置

    下载地址: 链接:https://pan.baidu.com/s/1WyuAlJSWZ3HyyEQlpiH3cA 提取码:6l38 破解相关请查看解压文件链接 1.firefox代理设置: burp ...