# logrotate logrotate 是 linux 自带的对日志进行截断(轮转),压缩,以及删除的工具。 logrotate 的配置文件是 `/etc/logrotate.conf`,通常不需要对他进行修改,自定义的配置文件放在 `/etc/logrotate.d/` 目录下。 ### 配置 一个典型的配置如下 ```conf /var/log/a.log { monthly rotate 5 compress delaycompress missingok notifempty create 644 root root postrotate /usr/bin/killall -HUP rsyslogd endscript } ``` 第一行表示针对 `/var/log/a.log` 文件进行操作。 - `monthly`: 表示日志文件按月轮转,其他可用值为 `yearly`,`weekly`,`daily`。 - `rotate 5`: 表示最多存储 5 个归档的日志文件,当出现第六个就会把时间最早的删除。 - `compress`: 在轮转任务完成后,压缩已归档的文件。默认使用 gzip, - `delaycompress`: 与 compress 一起使用,表示不要压缩最近的一次归档。 - `missingok`: 在日志轮转期间,任何错误将被忽略,比如文件无法找到。 - `notifempty`: 如果日志文件为空,轮转将不会执行。 - `create 644 bot bot`: 以指定的权限创建新的日志文件,同时 logrotate 也会重命名原始日志文件。 - `postrotate/endscript`: 在所有其他指令完成后,postrotate, endscript 里的命令将被执行。 ### 其他指令 `size=50M`: 当文件大小到 50M 时执行轮转。 `dateext`: 旧文件以日志命名。 `su bot bot`: 表示使用 bot 组 bot 用户执行轮转。 ### 手动执行 logrotate 有的时候为了测试轮转效果,可以手动执行一次 `logrotate`。 ```bash # 执行所有的配置 logrotate /etc/logrotate.conf # 指定某一个配置 logrotate /etc/logrotate.d/a.conf ``` 另外 `logrotate` 还有一个 `-d` 参数,可以以预演的方式执行 `logrotate` 并输出结果。这样可以进行验证而不会真实的去操作日志文件。 另外 `-f` 可以在轮转条件不满足的时候强制进行轮转。 `-v` 则提供更详细的输出。 ### 其他 logrotate 自身的日志在 `/var/lib/logrotate/status` 目录。 logrotate 的 cron 配置文件在 ` /etc/cron.daily/logrotate` ###### tags: `Linux` `logrotate`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up