您好,登录后才能下订单哦!
# Linux的logrotate怎么使用
## 一、logrotate简介
### 1.1 什么是logrotate
logrotate是Linux系统自带的日志轮替工具,用于自动轮转、压缩、删除和邮寄日志文件。它可以有效解决日志文件不断增长导致的磁盘空间问题,是系统管理员维护日志文件的利器。
### 1.2 主要功能特性
- **自动轮转**:按时间或大小条件触发日志轮转
- **压缩归档**:使用gzip/bzip2等压缩历史日志
- **日志清理**:按保留策略删除旧日志
- **邮件通知**:可将轮转后的日志发送到指定邮箱
- **自定义执行**:支持预执行和后执行脚本
### 1.3 典型应用场景
- Web服务器日志管理(Nginx/Apache)
- 系统日志管理(/var/log/目录)
- 应用服务日志管理(MySQL/Redis等)
- 自定义应用程序日志管理
## 二、安装与基本配置
### 2.1 安装logrotate
大多数Linux发行版已预装logrotate,如需手动安装:
```bash
# Debian/Ubuntu
sudo apt install logrotate
# RHEL/CentOS
sudo yum install logrotate
# 验证安装
logrotate --version
logrotate采用分层配置结构:
/etc/logrotate.conf # 主配置文件
/etc/logrotate.d/ # 应用配置目录
/usr/sbin/logrotate # 主程序位置
/var/lib/logrotate.status # 状态记录文件
查看默认配置/etc/logrotate.conf
:
weekly # 默认每周轮转一次
rotate 4 # 保留4个历史日志
create # 轮转后创建新文件
dateext # 使用日期作为后缀
compress # 启用压缩
include /etc/logrotate.d # 包含子配置
每个日志配置块格式如下:
日志文件路径 {
配置指令1
配置指令2
...
}
daily/weekly/monthly/yearly
:轮转时间间隔size 100M
:日志达到指定大小时轮转maxsize 100M
:与时间条件配合使用missingok
:日志不存在时不报错notifempty
:空日志不轮转compress
:使用gzip压缩delaycompress
:延迟压缩前一个日志rotate 5
:保留5个历史版本maxage 30
:删除超过30天的日志minsize 1M
:日志大于1M才轮转create 0640 root adm
:设置新日志权限nocreate
:不自动创建新日志prerotate
# 轮转前执行的命令
/usr/bin/systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
postrotate
# 轮转后执行的命令
/usr/bin/killall -HUP syslogd
endscript
sharedscripts
:多个日志共享脚本olddir /var/log/archive
:指定历史日志目录dateformat -%Y%m%d
:自定义日期格式/etc/logrotate.d/syslog
典型配置:
/var/log/syslog
{
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 syslog adm
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/etc/logrotate.d/nginx
示例:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
为Java应用配置日志轮转:
/opt/myapp/logs/*.log {
size 100M
missingok
rotate 10
compress
notifempty
copytruncate
dateext
dateformat -%Y%m%d.%s
}
使用调试模式测试配置:
# 测试配置但不实际执行
logrotate -d /etc/logrotate.conf
# 强制立即执行轮转
logrotate -vf /etc/logrotate.d/nginx
# 执行所有配置
logrotate /etc/logrotate.conf
# 执行单个配置
logrotate /etc/logrotate.d/nginx
/var/lib/logrotate.status
记录上次轮转时间:
logrotate state -- version 2
"/var/log/nginx/access.log" 2023-8-1-10:0:0
"/var/log/syslog" 2023-8-2-0:0:0
检查要点: 1. 配置文件语法是否正确 2. 日志文件路径是否匹配 3. 轮转条件是否满足
确保: 1. logrotate有读取日志的权限 2. 有目标目录写入权限 3. postrotate脚本有执行权限
logrotate通过cron每日运行:
# /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
如需更频繁的轮转(如每小时):
/etc/cron.hourly/logrotate
文件#!/bin/bash
/usr/sbin/logrotate /etc/logrotate.hourly.conf
特性 | logrotate | journald |
---|---|---|
存储格式 | 文本文件 | 二进制 |
轮转机制 | 外部工具 | 内置 |
查询能力 | 有限 | 强大 |
资源占用 | 低 | 较高 |
logrotate作为Linux系统的日志管理标准工具,通过合理的配置可以: - 自动化日志轮转流程 - 有效控制日志文件大小 - 优化存储空间利用率 - 保持日志可管理性
掌握logrotate的使用是每个Linux系统管理员的基本技能,本文详细介绍了从基础配置到高级应用的各个方面,读者可根据实际需求灵活运用这些知识来管理各类系统和服务日志。
注意:实际部署时应根据具体业务需求调整参数,建议先在测试环境验证配置效果。 “`
本文共计约4350字,涵盖了logrotate的安装配置、语法详解、实战示例、高级技巧等方面内容,采用Markdown格式编写,可直接用于文档发布或知识库建设。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。