本文共 1770 字,大约阅读时间需要 5 分钟。
Logrotate 这个工具是用来管理和分割日志文件的,虽然在一些系统中会自动生成配置文件,但了解它的运行原理和常用参数对于有效管理日志文件至关重要。
Logrotate 是一种自动化解决方案,用于在设定的频率下将期日志文件分割并压缩。其工作流程一般是:
运行计划任务:大多数系统通过 cron 表示任务运行logrotate,通常是每天一次。这个脚本的位置根据发行版有所不同,比如在 Debian 系统中为 /etc/cron.daily/logrotate
,在 Gentoo 中为 /etc/cron.daily/logrotate.cron
。
读取配置文件:logrotate 在运行时读取主配置文件 /etc/logrotate.conf
以获取默认的设置,并结合每个日志应用的自定义配置文件(位于 /etc/logrotate.d/
目录下)。
分割日志文件:根据配置文件的指令,logrotate 会选择指定的日志文件或目录,按时间或大小分割日志文件并进行压缩。
/etc/logrotate.conf
是 logrotate 的主要配置文件,包含了大多数系统的默认设置。文件内容包括参数注释和一些常用的设置示例:
include /etc/logrotate.d
:指定了各软件配置文件的位置。
可以在其中添加自定义参数,如指定日志保留多少天或星期等。
/etc/logrotate.d/
目录下存储了各个应用程序的日志分割配置文件。例如,PHP-FPM 的配置文件如下:
/var/log/php5-fpm.log { rotate 12 weekly missingok notifempty compress delaycompress postrotate /usr/lib/php5/php5-fpm-reopenlogs endscript}
其中,rotate 12
指定保留12个日志文件;weekly
表示每周分割一次日志;compress
表明对日志进行 gzip 压缩。
rotate n
:指定需要保留多少个日志版本,当分割执行时最旧的文件将被删除。
daily
:每天分割一次日志。
weekly
:每周分割一次。
monthly
:每月分割一次。
yearly
:每年分割一次。
如果没有设置 daily
、weekly
等参数,则 logrotate 会在默认运行时分割日志。
size 100k
:大文件达到 100KB 后分割。
size 100M
:大文件达到 100MB 后分割。
size 100G
:大文件达到 100GB 后分割(注意此大小可能性能影响大)。
文件大小的分割优先级高于定期分割。
compress
:对日志文件进行 gzip 压缩。
nocompress
:不对日志文件进行压缩。
delaycompress
:在下次分割时再进行压缩。
postrotate脚本
:在分割后执行的脚本命令,用于重启服务或其他操作。
sharedscripts
:确保在运行脚本时,只有当存在多个日志文件需要分割时才执行。因此,避免重复运行脚本。
为了根据需要分割特定日志文件,可以在配置文件中指定路径或使用通配符。
/var/foo/*.log /var/bar/log.txt { rotate 14 daily compress delaycompress sharedscripts postrotate /usr/sbin/apachectl graceful >> /dev/null endscript}
覆盖默认设置:应用配置文件可以覆盖主配置文件中的一些参数。
服务重启:确保在执行 postrotate 脚本时不影响系统稳定。
使用日志轮转:结合 logrotate 和 logrotate.conf 来有效管理日志文件,避免占用过多磁盘空间。
通过上述调整,logrotate 可以更好地满足不同应用和环境的需求。
转载地址:http://pcwfk.baihongyu.com/