logrotate
是一个 Linux 工具,用于管理和轮转日志文件。它可以定期将日志文件备份、压缩和清理,以防止日志文件占用过多磁盘空间。以下是 logrotate
的详细使用方法:
1. 安装 logrotate
大多数 Linux 发行版默认都包含 logrotate
。如果没有安装,可以使用包管理器进行安装:
- Debian/Ubuntu:
sudo apt-get install logrotate
- Red Hat/CentOS:
sudo yum install logrotate
2. 配置 logrotate
logrotate
的配置文件通常位于 /etc/logrotate.conf
,并且可以为特定的应用或日志文件创建单独的配置文件。主要的配置文件路径为 /etc/logrotate.d/
。
配置示例
以下是一个简单的 logrotate
配置示例,用于管理 Supervisor 的日志文件:
主配置文件 /etc/logrotate.conf
:
# 全局设置
weekly # 轮转周期:每周
rotate 4 # 保留 4 个备份
create 0640 root root # 新日志文件权限和所有者
compress # 压缩轮转后的日志
delaycompress # 延迟压缩(保留一个周期的原始日志)
notifempty # 只轮转非空的日志文件
missingok # 如果日志文件丢失,不报告错误
应用配置文件 /etc/logrotate.d/myapp
:
/var/log/myapp.out.log {
daily # 轮转周期:每天
rotate 7 # 保留 7 个备份
compress # 压缩轮转后的日志
delaycompress # 延迟压缩(保留一个周期的原始日志)
missingok # 如果日志文件丢失,不报告错误
notifempty # 只轮转非空的日志文件
create 0640 root root # 新日志文件权限和所有者
sharedscripts # 脚本共享
postrotate
# 轮转后的处理脚本,例如重启程序
systemctl reload supervisor > /dev/null
endscript
}
/var/log/myapp.err.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root root
sharedscripts
postrotate
systemctl reload supervisor > /dev/null
endscript
}
3. 手动运行 logrotate
可以使用 logrotate
的 -f
选项强制运行日志轮转:
sudo logrotate -f /etc/logrotate.conf
4. 检查 logrotate
状态
logrotate
的状态文件通常位于 /var/lib/logrotate/status
。可以查看这个文件来检查上次轮转的时间和状态。
cat /var/lib/logrotate/status
5. 配置脚本执行
logrotate
支持在轮转日志之后执行自定义脚本,如重启服务、清理缓存等。可以在配置文件中使用 postrotate
和 endscript
来指定这些操作。
6. 日志轮转的高级配置
- 日志分割和压缩:可以选择不同的压缩方式,如
gzip
、bzip2
等。 - 配置自定义周期:可以配置按小时、按周或按月进行轮转。
- 特殊处理:例如,只在特定条件下轮转,或对不同的日志文件使用不同的策略。