Ubuntu系统日志文件怎么清理
导读:Ubuntu 系统日志清理与维护指南 一 快速释放空间 查看 systemd 日志占用:执行命令:journalctl --disk-usage。 按大小清理:例如保留最近 100MB,执行:sudo journalctl --vacuu...
Ubuntu 系统日志清理与维护指南
一 快速释放空间
- 查看 systemd 日志占用:执行命令:journalctl --disk-usage。
- 按大小清理:例如保留最近 100MB,执行:sudo journalctl --vacuum-size=100M。
- 按时间清理:例如仅保留最近 7 天,执行:sudo journalctl --vacuum-time=7d。
- 清空而不删除日志文件:例如清空 /var/log/syslog,执行:sudo truncate -s 0 /var/log/syslog(进程持有文件句柄时仍会继续写入)。
- 谨慎操作:避免一次性删除 /var/log 下全部文件(如 sudo rm -rf /var/log/),以免影响正在写入的日志与故障排查。
二 安全清理 var log 目录
- 定位大日志:执行:sudo du -h /var/log | sort -hr | head,找出占用空间最大的日志。
- 清空指定日志:对确定的单个文件使用 truncate -s 0 /var/log/xxx.log,避免直接删除正在被进程写入的日志文件。
- 批量清理旧文件(按时间):例如删除 30 天前的日志文件,执行:sudo find /var/log -type f -name “*.log” -mtime +30 -exec rm -f { } ; (请先确认不会影响正在运行的业务与审计)。
- 清理压缩旧日志:例如删除 7 天前的 .gz 归档,执行:sudo find /var/log -type f -name “*.gz” -mtime +7 -delete。
三 配置自动轮转避免再次膨胀
- 编辑或新增配置:在 /etc/logrotate.d/ 下为服务创建配置,例如 /etc/logrotate.d/rsyslog:
/var/log/syslog {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
} - 立即执行一次轮转(用于测试):sudo logrotate -f /etc/logrotate.conf。
- 说明:大多数 Ubuntu 系统已预装并启用 logrotate,通过按天/按大小轮换并压缩,配合保留天数即可自动控制日志体积。
四 应用日志与长期维护
- 应用日志:Node.js、Java、Nginx 等应用常将日志写入 /var/log/ 或应用目录。建议为应用配置日志轮转(如按日或按大小),或在应用内使用日志库(如 winston-daily-rotate-file)实现 maxSize 与 maxFiles 策略,避免无限增长。
- 定时清理:如需定期清理历史压缩日志,可在 crontab 中添加任务,例如每周清理 7 天前的 .gz 文件:
0 3 * * 0 find /var/log -type f -name “*.gz” -mtime +7 -delete - 风险提示:清理前确认日志不再用于审计或故障排查;对正在写入的日志优先使用 truncate -s 0 而非删除文件;生产环境建议先在测试环境验证命令与策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu系统日志文件怎么清理
本文地址: https://pptw.com/jishu/754061.html
