logrotate 日志转储
目录
安装
主流 Linux 发行版上都默认安装了 logrotate。如果没有,可以使用下面的命令安装:
- Debian/Ubuntu:
|
|
- Fedora/CentOS/RHEL:
|
|
配置
配置文件路径
/etc/logrotate.conf
,为全局配置,通常不需要要修改;- 在
/etc/logrotate.d/
目录下,为各应用的具体配置,通常以应用程序名称来命名文件。
配置参数
以 12306 轮询的配置为例(/etc/logrotate.d/12306
):
|
|
daily
:日志切割的执行周期。可以为"daily"、“weekly”、“monthly"或者"yearly”。rotate 20
:最多保留 20 个日志备份。第 21 个日志备份文件生成时,最早的日志备份将被删除。dateext
:日志文件切割时文件名后缀添加日期,形如query.log-20180210
,日期格式可在/etc/logrotate.conf
中配置。不加该参数时,默认添加阿拉伯数字后缀。copytruncate
:使用该参数后,拷贝原日志文件作为备份,并且将原文件清空。优点是兼容性好,缺点是拷贝和清空之间的时间差会丢数据。如果没有配置该选项,默认的方式是,把旧日志文件改名为备份文件名 ,然后创建新日志文件,并告知应用程序使用新的描述符。missingok
:在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。notifempty
:如果日志文件为空的话,不转储。create 644 chi chi
:使用指定的文件模式创建新日志文件。
运行
Logrotate 是基于 CRON 来运行的,其脚本是/etc/cron.daily/logrotate
,日志转储是系统自动完成的。
题外话,不同 cron 任务的执行时间分别为:
/etc/cron.daily/
下面的任务都是每天 6:25 执行;/etc/cron.weekly/
下面的任务都是每周日 6:47 执行;/etc/cron.monthly/
下面的任务都是每月 1 号 6:52 执行;
因此默认情况下,日志转储都在早上 6:25 执行。
自动运行
无需任何设置。logrotate 每天会执行一次,检查是否需要做日志转储。
手动运行
如果想自定义运行时间,那么可以将 logrotate 加入到 cron 定时任务中去。由于 logrotate 每天至多执行一次 的原则,我们自己加入到 cron 中的定时任务执行后,自动运行的任务就不会执行了。
当然这要求我们自己任务的执行时间在 6:25 之前,否则需要删除/etc/cron.daily/logrotate
阻止其自动运行才可以。
注意
必须使用 root 用户来设置 crontab,格式为:
|
|