在 CentOS 上,logrotate 是一个用于管理日志文件的工具,它可以帮助你自动切割、压缩和删除旧的日志文件,以防止日志文件无限增长。logrotate 通常用于管理系统日志、应用程序日志等。
1. logrotate 的基本使用1.1 配置文件logrotate 的配置文件通常位于 /etc/logrotate.conf,但大多数具体的日志轮转规则都放在 /etc/logrotate.d/ 目录下。
1.2 配置文件结构一个典型的 logrotate 配置文件结构如下:
/path/to/your/logfile { daily rotate 7 compress missingok notifempty create 640 user group postrotate /usr/bin/systemctl reload your_service.service > /dev/null 2>&1 || true endscript }/path/to/your/logfile: 要轮转的日志文件路径。daily: 每天轮转一次。rotate 7: 保留7个旧的日志文件。compress: 压缩旧的日志文件。missingok: 如果日志文件不存在,不报错。notifempty: 如果日志文件为空,不轮转。create 640 user group: 轮转后创建一个新的日志文件,并设置权限为 640,属主为 user,属组为 group。postrotate: 轮转后执行的命令。通常用于重新加载服务。1.3 手动运行 logrotate
你可以手动运行 logrotate 来测试配置:
sudo logrotate /etc/logrotate.conf
或者只针对某个配置文件:
sudo logrotate /etc/logrotate.d/your_config2. 示例:轮转 Nginx 日志
假设你有一个 Nginx 服务,日志文件位于 /var/log/nginx/access.log 和 /var/log/nginx/error.log。你可以在 /etc/logrotate.d/ 目录下创建一个配置文件 nginx:
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }/var/log/nginx/*.log: 匹配所有以 .log 结尾的日志文件。daily: 每天轮转一次。rotate 14: 保留14个旧的日志文件。compress: 压缩旧的日志文件。delaycompress: 延迟压缩,即在下次轮转时才压缩上次的日志文件。create 640 nginx adm: 创建新的日志文件,权限为 640,属主为 nginx,属组为 adm。postrotate: 轮转后重新加载 Nginx 服务。3. 常见问题3.1 日志文件没有被轮转检查 logrotate 的 cron 任务是否正常运行。logrotate 通常由 /etc/cron.daily/logrotate 脚本每天运行一次。确保日志文件路径正确,并且有读写权限。3.2 日志文件被删除而不是轮转检查 rotate 参数是否设置正确,确保保留的日志文件数量不为0。3.3 日志文件没有被压缩确保 compress 参数已启用。4. 总结
logrotate 是一个非常强大的工具,可以帮助你自动化日志管理。通过合理的配置,你可以确保日志文件不会无限增长,同时保留足够的历史日志供分析和排查问题。
网友回复