云服务器初始化时配置logrotate可防日志撑爆磁盘,需验证服务状态、检查主配置、添加自定义规则(如daily/rotate 14/compress/copytruncate),支持dateext、olddir、size触发,并手动测试生效。

云服务器初始化阶段就配置好日志轮转,能避免后期磁盘被日志撑爆。核心是用系统自带的 logrotate 工具,配合合理策略,不用额外装软件,也不依赖应用自身支持。
确认 logrotate 已安装并默认启用
Ubuntu/Debian/CentOS 等主流发行版默认已预装 logrotate,并通过 daily cron 自动运行。可快速验证:
- 检查服务状态:
sudo systemctl list-timers | grep logrotate(应看到每日定时任务) - 查看主配置:
cat /etc/logrotate.conf,确认包含include /etc/logrotate.d - 列出已有规则:
ls /etc/logrotate.d/,常见如 nginx、rsyslog、apt 等都自带配置
为自定义应用添加轮转规则
比如你的程序日志写在 /var/log/myapp/output.log,推荐创建独立配置文件:
- 新建配置:
sudo nano /etc/logrotate.d/myapp - 填入以下内容(按需调整):
/var/log/myapp/output.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0644 root root
copytruncate
}
说明:每天轮转、保留14天、空文件不处理、压缩旧日志、截断原文件保证应用持续写入。
优化轮转命名与归档路径(可选但实用)
默认轮转文件名如 output.log.1 不直观,加日期更易管理:
- 在配置块中加入:
dateext和dateformat -%Y%m%d - 想把旧日志统一存到其他目录(如NAS挂载点),加一行:
olddir /mnt/backup/logs(确保目录存在且有写权限) - 若日志增长极快,建议改用大小触发:
size 100M替代daily,避免单日产生多个大文件
验证配置是否生效
别等一周后才发现没起作用,初始化时就手动测试一次:
- 模拟执行(不实际删除,只看动作):
sudo logrotate -d /etc/logrotate.d/myapp - 强制执行一轮:
sudo logrotate -f /etc/logrotate.d/myapp - 检查结果:
ls -la /var/log/myapp/,应看到output.log被清空,同时生成output.log-20260813类似文件











