用logrotate管理每日增长的日志

来源:互联网 发布:如何看待网络道德问题 编辑:程序博客网 时间:2024/05/22 00:23

转载自:http://blog.csdn.net/baidu_zhongce/article/details/50393090

logrotate简介

logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large.

这是logrotate文档中对其自身的描述,其实logrotate功能很简单,正如其名,按一定周期自动循环分割和保存日志防止无限增长,必要的时候进行压缩、删除,还可以进行邮件通知等功能。 
很多服务器上总会运行着一些会不停生成成吨日志的程序,最简单的比如nginx、httpd之类的web服务器的访问日志,为了保持这些日志的可检索以及防止无限增长把有限的硬盘都吃干净了,就会有五花八门的cron脚本来处理这些日志,事实上这些事情都可以由logrotate代劳。

安装logrotate

事实上大多数Linux发行版本都默认安装了logrotate,可以通过以下命令来判断系统是否已经预装了logrotate: 
rpm包管理器:

<code class="hljs 1c has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">rpm -qa<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">|grep logrotate</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

dpkg包管理器:

<code class="hljs brainfuck has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">dpkg</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">list|grep</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">logrotate</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

更简单粗暴的方法:

<code class="hljs  has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">which logrotate</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

如果能看到有字符串返回的话,你的服务器就应该预装了logrotate,并且它已经每天在默默地工作了,只不过你并没有给他分配活儿。如果没有安装的话,用正常的包管理工具都能安装它:

<code class="hljs cmake has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">yum <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">install</span> logrotateapt-get <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">install</span> logrotate</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

logrotate基本工作原理

作为一个定时处理的管理工具,logrotate本身是个命令行的工具,然而它需要定时处理你的日志,所以显然logrotate还是得基于cron来工作的,否则就没有人定时来唤醒它让它干活了,正常情况下logrotate已经作为cron.daily的一个任务每天被定时在执行了,这个定时脚本位于/etc/cron.daily/logrotate

<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-shebang" style="color: rgb(0, 102, 102); box-sizing: border-box;">#!/bin/sh</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># Clean non existent log file entries from status file</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cd</span> /var/lib/logrotatetest <span class="hljs-operator" style="box-sizing: border-box;">-e</span> status || touch statushead -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> status > status.cleansed <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'s/"//g'</span> status | <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">read</span> logfile date<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span>    [ <span class="hljs-operator" style="box-sizing: border-box;">-e</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$logfile</span>"</span> ] && <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">echo</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"\"<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$logfile</span>\" <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$date</span>"</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">done</span> >> status.cleanmv status.clean statustest -x /usr/sbin/logrotate || <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">exit</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>/usr/sbin/logrotate /etc/logrotate.conf</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

上面这段是Ubuntu中默认的logrotate脚本,各个不同版本上的logrotate脚本会有细微的不同,但是核心都是使用/etc/logrotate.conf配置脚本来启动logrotate。 
然而这段脚本只是位于这个目录里,为什么会被每天调用呢,而且每天什么点调用呢?可以查看CRON的默认配置文件/etc/crontab(新版CentOS中其默认配置文件位于/etc/anacrontab)的内容:

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># /etc/crontab: system-wide crontab</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># Unlike any other crontab you don't have to run the `crontab'</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># command to install the new version when you edit this file</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># and files in /etc/cron.d. These files also have username fields,</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># that none of the other crontabs do.</span><span class="hljs-constant" style="box-sizing: border-box;">SHELL</span>=<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/bin/sh</span><span class="hljs-constant" style="box-sizing: border-box;">PATH</span>=<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/usr/local</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/sbin:/usr</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/local/bin</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:/sbin</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:/bin</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:/usr/sbin</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:/usr/bin</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># m h dom mon dow user  command</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">17</span> *    * * *   root    cd / && run-parts --report /etc/cron.hourly<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">25</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">47</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>    * * <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">52</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>    <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

事实上CRON默认会存在这4条指令,分别是每小时、每天、每周、每个月会执行对应目录下的脚本,而不需要再通过日常常用的crontab去配置,可以看到cron.daily目录下的脚本在每天的6点25分会被执行,这也就意味着在这台机器上每天6点25分会启动logrotate进行日志的处理,各个系统的默认配置也是各不相同的。

最后来看一下默认的配置文件/etc/logrotate.conf:

<code class="hljs vala has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># see "man logrotate" for details</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># rotate log files weekly</span>weekly<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># use the syslog group by default, since this is the owning group</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># of /var/log/syslog.</span>su root syslog<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># keep 4 weeks worth of backlogs</span>rotate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># create new (empty) log files after rotating old ones</span>create<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># uncomment this if you want your log files compressed</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#compress</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># packages drop log rotation information into this directory</span>include /etc/logrotate.d<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># no packages own wtmp, or btmp -- we'll rotate them here</span>/<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span>/log/wtmp {    missingok    monthly    create <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0664</span> root utmp    rotate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}/<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span>/log/btmp {    missingok    monthly    create <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0660</span> root utmp    rotate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># system-specific logs may be configured here</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li></ul>

其实默认配置文件中给出的是logrotate的一些默认配置选项,并给出了一些样例的配置(如wtmp,btmp),这些配置的意义在后文中会予以阐述,而这个配置文件中还包含了include /etc/logrotate.d,这使得我们可以不用将所有的配置扎堆写入这个默认配置文件中,而是可以分散地管理在/etc/logrotate.d目录下,事实上/etc/logrotate.d也已经包含了一些样例的配置文件供参考。

logrotate的配置和使用

如同刚才所说的,logrotate会每日CRON启动并执行,我们只需要在/etc/logrotate.d目录中添加我们需要的配置,就可以利用logrotate来自动管理我们需要的日志文件。 
这里先来看一个目录下已经存在的样例配置dpkg:

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">/var/<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">log</span>/dpkg.<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">log</span> {    monthly    rotate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">12</span>    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">compress</span>    delaycompress    missingok    notifempty    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">create</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">644</span> root root}/var/<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">log</span>/alternatives.<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">log</span> {    monthly    rotate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">12</span>    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">compress</span>    delaycompress    missingok    notifempty    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">create</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">644</span> root root}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li></ul>

正如其名称dpkg,这个配置是用来处理包管理器dpkg的默认日志的,处理的日志文件是/var/log/dpkg.log与/var/log/alternatives.log这两个文件,其配置内容如下:

  • monthly:按月处理日志
  • rotate 12:保留12份日志
  • compress:日志分割后会进行gzip压缩
  • delaycompress:日志压缩会被延后到下次分割时进行
  • missingok:目标日志文件不存在程序也不会报错退出
  • notifempty:目标日志文件为空时不进行分割操作
  • create 644 root root:以644也就是rw-r–r–权限来建立分割出来的文件,同时该分割文件所属用户为root,用户组为root

在/var/log下列出文件列表,可以看到dpkg的日志的确被分割并压缩了: 
这里写图片描述

仿照这个样例文件,我们可以配置一个类似的处理任务,这里处理一下nginx的log文件,一般web serve的access log文件都是日志重灾区,建立一个/etc/logrotate.d/nginx配置文件,内容如下:

<code class="hljs perl has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">/home/wwwlogs/<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">*.</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">log</span> {    daily    rotate <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>    dateext    compress    delaycompress        missingok    notifempty    create <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">644</span> root root    sharedscripts    postrotate        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">kill</span> -USR1 <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">`cat /usr/local/nginx/logs/nginx.pid`</span>    endscript}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

与之前的样例配置类似,注意到声明日志文件位置时使用了*通配符,这意味着/home/wwwlogs/下的所有.log文件都会被logrotate处理,这里多出了几行配置,说明如下:

  • daily:每天处理日志
  • dateext:备份的日志文件的后缀不再是默认的.1 .2 .3的递增格式,而是.YYYYMMDD的日期格式
  • sharedscripts:配置该选项时,prerotate和postrotate段的脚本会在所有文件被处理结束(被处理前)统一执行,而不是每个文件前后分别执行一次
  • postrotate:处理日志后钩子,postrotate和endscript构成一个shell语句块,在日志文件被处理后这部分语句会被执行,对应的还有prerotate语句块

    这样nginx的log文件的处理配置就完成了,但是我们可能还需要确认一下配置的内容到底是否正确呢,这时候可以利用logrotate命令行的debug选项来进行测试,命令如下:

<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">logrotate <span class="hljs-operator" style="box-sizing: border-box;">-d</span> <span class="hljs-operator" style="box-sizing: border-box;">-f</span> /etc/logrotate.d/nginx</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

开启了debug选项时,logrotate会详细地给出处理日志过程中的处理信息,但是并不会真正地去处理日志文件,所以可以用来测试配置文件处理的是否正确,这行命令的输出如下:

<code class="hljs applescript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">reading config <span class="hljs-type" style="box-sizing: border-box;">file</span> /etc/logrotate.d/nginxHandling <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> logsrotating pattern: /home/wwwlogs/*.<span class="hljs-command" style="box-sizing: border-box;">log</span>  forced <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> command line (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span> rotations)empty <span class="hljs-command" style="box-sizing: border-box;">log</span> files are <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> rotated, old logs are removed<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">considering</span> <span class="hljs-command" style="box-sizing: border-box;">log</span> /home/wwwlogs/access.<span class="hljs-command" style="box-sizing: border-box;">log</span>  <span class="hljs-command" style="box-sizing: border-box;">log</span> needs rotating<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">considering</span> <span class="hljs-command" style="box-sizing: border-box;">log</span> /home/wwwlogs/jp01.sanaecon.com.<span class="hljs-command" style="box-sizing: border-box;">log</span>  <span class="hljs-command" style="box-sizing: border-box;">log</span> needs rotating<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">considering</span> <span class="hljs-command" style="box-sizing: border-box;">log</span> /home/wwwlogs/nginx_error.<span class="hljs-command" style="box-sizing: border-box;">log</span>  <span class="hljs-command" style="box-sizing: border-box;">log</span> needs rotatingrotating <span class="hljs-command" style="box-sizing: border-box;">log</span> /home/wwwlogs/access.<span class="hljs-command" style="box-sizing: border-box;">log</span>, <span class="hljs-command" style="box-sizing: border-box;">log</span>->rotateCount <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>dateext suffix '-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20151108</span>'glob pattern '-[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>]'glob finding logs <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> compress failedglob finding old rotated logs failedrotating <span class="hljs-command" style="box-sizing: border-box;">log</span> /home/wwwlogs/jp01.sanaecon.com.<span class="hljs-command" style="box-sizing: border-box;">log</span>, <span class="hljs-command" style="box-sizing: border-box;">log</span>->rotateCount <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>dateext suffix '-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20151108</span>'glob pattern '-[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>]'glob finding logs <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> compress failedglob finding old rotated logs failedrotating <span class="hljs-command" style="box-sizing: border-box;">log</span> /home/wwwlogs/nginx_error.<span class="hljs-command" style="box-sizing: border-box;">log</span>, <span class="hljs-command" style="box-sizing: border-box;">log</span>->rotateCount <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">is</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>dateext suffix '-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20151108</span>'glob pattern '-[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>][<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>]'glob finding logs <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> compress failedglob finding old rotated logs failedrenaming /home/wwwlogs/access.<span class="hljs-command" style="box-sizing: border-box;">log</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> /home/wwwlogs/access.<span class="hljs-command" style="box-sizing: border-box;">log</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20151108</span>creating new /home/wwwlogs/access.<span class="hljs-command" style="box-sizing: border-box;">log</span> mode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0644</span> uid = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> gid = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>renaming /home/wwwlogs/jp01.sanaecon.com.<span class="hljs-command" style="box-sizing: border-box;">log</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> /home/wwwlogs/jp01.sanaecon.com.<span class="hljs-command" style="box-sizing: border-box;">log</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20151108</span>creating new /home/wwwlogs/jp01.sanaecon.com.<span class="hljs-command" style="box-sizing: border-box;">log</span> mode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0644</span> uid = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> gid = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>renaming /home/wwwlogs/nginx_error.<span class="hljs-command" style="box-sizing: border-box;">log</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> /home/wwwlogs/nginx_error.<span class="hljs-command" style="box-sizing: border-box;">log</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20151108</span>creating new /home/wwwlogs/nginx_error.<span class="hljs-command" style="box-sizing: border-box;">log</span> mode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0644</span> uid = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> gid = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span><span class="hljs-property" style="box-sizing: border-box;">running</span> postrotate <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">script</span><span class="hljs-property" style="box-sizing: border-box;">running</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">script</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> arg /home/wwwlogs/*.<span class="hljs-command" style="box-sizing: border-box;">log</span> : <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"        kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`"</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li></ul>

可以看到logrotate如我们设想的那样在正常处理日志文件,至此一个logrotate配置就完成了。

logrotate命令行除了可以用来展示配置文件配置是否正确以外,还可以用来手动执行日志分割,使用以下命令行:

<code class="hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">logrotate <span class="hljs-operator" style="box-sizing: border-box;">-f</span> /etc/logrotate.d/nginx</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

就会脱离CRON手动运行一次日志分割和处理任务,事实上通过这个方式也可以用第三方的其他程序来管理日志分割的频率。

本文中给出了一些常见的配置文件中的配置参数的含义,更多其他的配置参数的含义和功能可以参考官方的配置文档:http://linuxconfig.org/logrotate-8-manual-page


0 0
原创粉丝点击