logrotate通过compress指令内置调用gzip -6压缩,需配合delaycompress推迟压缩、missingok避免中断、notifempty防止空日志轮转、create设置权限,并用sudo logrotate -vf验证是否出现“compressing log with gzip”提示及生成.gz文件。

logrotate 本身不直接调用 gzip 命令传参,而是通过内置的 compress 指令触发系统默认的 gzip 压缩(即等价于 gzip -6),你只需启用它并配合其他关键参数即可实现自动压缩。
启用基础压缩功能
在 logrotate 配置块中加入 compress,这是开启 gzip 压缩的开关:
- 它会让 logrotate 在轮转后对旧日志(如
access.log.1)执行gzip access.log.1 - 生成
access.log.1.gz,原明文文件被删除 - 无需额外写
gzip -9或指定路径——logrotate 内部硬编码调用系统gzip
控制压缩时机:delaycompress 很关键
单独用 compress 可能导致刚轮转的日志被立即压缩,影响排查。推荐组合使用:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
-
compress:启用压缩行为 -
delaycompress:推迟压缩一轮,让最新轮转文件(如access.log.1)保持明文,下一轮才压成access.log.2.gz - 这样既节省空间,又保留一份可直接
tail -f或grep的近期日志
确保压缩成功运行的必要配套项
仅写 compress 不够,以下三项常被遗漏但直接影响压缩是否生效:
-
missingok:避免日志文件临时缺失时报错中断流程 -
notifempty:空日志不轮转,自然也不压缩,防无效操作 -
create 644 www-data www-data(或对应用户组):轮转后新建日志需权限,否则 nginx 可能写入失败,间接导致后续轮转异常
验证与调试压缩是否正常工作
别等磁盘爆了才发现没压上。手动触发并观察输出:
- 运行:
sudo logrotate -vf /etc/logrotate.d/nginx - 看终端是否出现
compressing log with gzip类提示 - 检查目录下是否生成
*.log.1.gz,且*.log.1已消失 - 若报
gzip command not found,说明系统没装 gzip(极少见,但容器环境可能发生)










