定期清理Ubuntu日志可通过以下方式操作,建议结合工具与脚本实现自动化管理:
一、使用系统工具
-
journalctl命令(针对systemd日志)
- 查看日志占用:
journalctl --disk-usage - 保留最近7天日志:
sudo journalctl --vacuum-time 1w - 保留500MB日志:
sudo journalctl --vacuum-size 500M
- 查看日志占用:
-
logrotate工具(自动轮转压缩)
- 编辑配置文件(如
/etc/logrotate.d/rsyslog):/var/log/syslog { daily rotate 7 compress missingok } - 手动触发:
sudo logrotate -f /etc/logrotate.conf
- 编辑配置文件(如
二、命令行批量清理
- 清空所有.log文件内容(保留文件结构):
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \; - 删除指定天数前的日志文件(如30天前):
sudo find /var/log -type f -name "*.log" -mtime +30 -delete
三、自动化脚本与定时任务
- 脚本示例(删除30天前日志):
#!/bin/bash LOG_DIR="/var/log" find "$LOG_DIR" -type f -name "*.log" -mtime +30 -exec rm -f {} \;保存为
clean_logs.sh,赋予执行权限:chmod +x clean_logs.sh。 - 添加定时任务(每天凌晨2点执行):
crontab -e,添加行:0 2 * * * /path/to/clean_logs.sh。
注意事项
- 操作前建议备份重要日志(如
/var/log/auth.log)。 - 谨慎使用
rm -rf,避免误删系统关键日志。 - 定期监控磁盘空间,可通过
df -h查看剩余空间。
以上方法可根据需求选择,优先使用journalctl或logrotate实现自动化管理,减少手动操作风险。