SuperAPI AI 工具集

logrotate

部署与运维

查看项目

更新于 10-15 23:48

技能介绍

用途:logrotate 用于管理 Linux 系统与应用日志的轮转,按计划切割、压缩、保留或删除旧日志,避免单个日志文件无限增长。

主要能力:支持按频率(daily 等)轮转、压缩(compress)、按数量或天数保留(rotate、maxage)、日期后缀(dateext、dateformat)、glob 匹配多文件、postrotate/endscript 脚本、sharedscripts、copytruncate、delaycompress、su 指定用户等指令。

关键路径:二进制 /usr/sbin/logrotate;主配置 /etc/logrotate.conf;drop-in 目录 /etc/logrotate.d/;状态文件 /var/lib/logrotate/status;调度由 /etc/cron.daily/logrotate 或 logrotate.timer(systemd)执行。安装:apt install logrotate 或 dnf install logrotate。

常用命令:logrotate -d /etc/logrotate.conf 干跑测试;logrotate -d /etc/logrotate.d/nginx 测试单个配置;logrotate -f /etc/logrotate.conf 强制轮转;logrotate -v 详细输出;logrotate -vf 强制加详细;cat /var/lib/logrotate/status 查看上次轮转时间;grep myapp /var/lib/logrotate/status 查单个日志;logrotate --debug 校验语法;sudo -u www-data logrotate -f /etc/logrotate.d/myapp 以指定用户运行;systemctl status logrotate.timer 查看定时器。

健康检查:logrotate -d /etc/logrotate.conf 2>&1 | grep -i error 无输出表示配置有效;stat /var/lib/logrotate/status 确认文件存在且 mtime 较新;在 syslog 中 grep logrotate 检查近期失败。

常见故障:权限拒绝需检查日志属主并加 su 指令;postrotate 失败需手动执行该命令并检查退出码,必要时加 sharedscripts;配置解析错误用 -d 查看行号;轮转未触发多为 glob 不匹配;.gz 损坏或缺失检查 gzip 与磁盘空间;应用仍写旧 inode 需在 postrotate 中发 SIGHUP 或改用 copytruncate;旧文件未删除检查 rotate 与 maxage;状态文件缺失可 touch 创建或用 -s 指定路径。

限制与注意:应用须在轮转后重开日志描述符,否则继续写旧 inode;copytruncate 在复制与截断之间可能丢失日志行;应用仍写 .log.1 时需 delaycompress;cron.daily 运行时间不精确,非实时轮转;dateext 比数字后缀更清晰;glob 场景通常应加 sharedscripts。