我有这个 logrotate 配置,我在 Ubuntu 10.04 上运行。
/var/log/mysql/mysql-slow.log {
daily
rotate 3
compress
notifempty
missingok
create 660 mysql adm
postrotate
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
Run Code Online (Sandbox Code Playgroud)
}
我昨天把它放在 /etc/logrotate.d 中,今天日志没有轮换。
以下是我所做的事情:
当我这样做时:
$ logrotate -d -f mysql-slow
reading config file mysql-slow
reading config info for /var/log/mysql/mysql-slow.log
Handling 1 logs
rotating pattern: /var/log/mysql/mysql-slow.log forced from command line (3 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysql/mysql-slow.log
log needs rotating
rotating log /var/log/mysql/mysql-slow.log, log->rotateCount is 3
dateext suffix '-20120329'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/mysql/mysql-slow.log.3.gz to /var/log/mysql/mysql-slow.log.4.gz (rotatecount 3, logstart 1, i 3),
renaming /var/log/mysql/mysql-slow.log.2.gz to /var/log/mysql/mysql-slow.log.3.gz (rotatecount 3, logstart 1, i 2),
renaming /var/log/mysql/mysql-slow.log.1.gz to /var/log/mysql/mysql-slow.log.2.gz (rotatecount 3, logstart 1, i 1),
renaming /var/log/mysql/mysql-slow.log.0.gz to /var/log/mysql/mysql-slow.log.1.gz (rotatecount 3, logstart 1, i 0),
renaming /var/log/mysql/mysql-slow.log to /var/log/mysql/mysql-slow.log.1
creating new /var/log/mysql/mysql-slow.log mode = 0660 uid = 20004 gid = 4
running postrotate script
running script (multiple) with arg /var/log/mysql/mysql-slow.log : "
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
"
compressing log with: /bin/gzip
removing old log /var/log/mysql/mysql-slow.log.4.gz
Run Code Online (Sandbox Code Playgroud)
小智 62
一个常见问题是,当您第一次设置每日 logrotate.d 条目时,它不会在第一天轮换。当您使用基于时间的轮换(每天/每周/每月)时,logrotate 会在/var/lib/logrotate/status
(或/var/lib/logrotate.status
在 RHEL 系统上)看到文件的最后日期的日期戳。
潦草的日期成为将来运行logrotate
将用来比较“每日”轮换的参考日期。由于默认的 cron 作业每天运行,这通常只是日常作业中的问题。
您可以通过两种方式避免此问题;
跑 sudo logrotate -f /etc/logrotate.d/<my rotate job>
/var/lib/logrotate/status
手动编辑并添加该行:
"/var/log/my_special.log" 2013-4-8
根据以下 Slicehost 文章:
了解 Ubuntu 上的 logrotate - 第 2 部分
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-ubuntu-part-2
...该/var/lib/logrotate/status
文件“存储有关上次轮换每个日志文件的时间的信息。 ”。该logrotate的手册页说,被称为“状态文件”。
ServerFault 中的另一个讨论也可能有用:
在该讨论中,“MadHatter”对“状态”(状态)文件说了以下内容:
" 每个文件都有一行,这是它上次轮换的日期;如果您在给定文件到期轮换的日期运行 logrotate,则给定当前日期和文件中的日期之间的天数 ( 1 表示每天,7 表示每周等),文件将被旋转。”
我希望这有帮助。
归档时间: |
|
查看次数: |
90916 次 |
最近记录: |