Ubuntu如何自动清理旧日志
导读:Ubuntu自动清理旧日志的常用方法 1. 使用logrotate工具(系统自带,推荐) logrotate是Ubuntu默认的日志轮转工具,可自动压缩、备份和删除旧日志,无需额外安装。 配置文件位置:主配置文件为/etc/logrota...
Ubuntu自动清理旧日志的常用方法
1. 使用logrotate工具(系统自带,推荐)
logrotate是Ubuntu默认的日志轮转工具,可自动压缩、备份和删除旧日志,无需额外安装。
- 配置文件位置:主配置文件为
/etc/logrotate.conf
,服务级配置文件存放在/etc/logrotate.d/
目录下(如rsyslog
、nginx
等服务的配置)。 - 自定义配置示例:若需管理
/var/log/myapp.log
(自定义应用日志),可在/etc/logrotate.d/
下创建新文件(如myapp
),内容如下:/var/log/myapp.log { daily # 每天轮转 rotate 7 # 保留最近7天的日志 compress # 压缩旧日志(如myapp.log.1.gz) delaycompress # 延迟压缩(避免立即压缩最新轮转文件) missingok # 日志文件不存在时不报错 notifempty # 日志为空时跳过轮转 create 640 root adm # 轮转后创建新文件,权限640,属主root,属组adm }
- 手动触发验证:修改配置后,运行
sudo logrotate -f /etc/logrotate.conf
强制立即执行,检查/var/log/
目录是否生成压缩文件。
2. 使用journalctl命令(管理系统日志)
journalctl是systemd的日志管理工具,可清理journald
存储的二进制日志(默认路径为/var/log/journal/
)。
- 按时间清理:删除两周前的日志,保留近期记录:
sudo journalctl --vacuum-time=2weeks
- 按大小清理:限制日志总大小为100MB,超出部分自动删除:
sudo journalctl --vacuum-size=100M
- 针对服务清理:仅清理
ssh.service
的日志:sudo journalctl --vacuum-by-service=ssh.service
- 注意:此方法仅清理
journald
日志,不影响/var/log/
下的文本日志(如syslog
、auth.log
)。
3. 设置定时任务(cron)自动化执行
无论使用logrotate还是journalctl,均可通过cron定时任务定期执行清理,避免手动操作。
- 编辑当前用户的crontab:运行
crontab -e
,添加以下内容(以每天凌晨2点执行logrotate为例):0 2 * * * /usr/sbin/logrotate /etc/logrotate.conf
- 添加journalctl定时任务:若需每天清理两周前的日志,可添加:
0 3 * * * /usr/bin/journalctl --vacuum-time=2weeks
- 说明:cron语法为
分钟 小时 日 月 周 命令
,上述配置表示每天凌晨2点执行logrotate,3点执行journalctl清理。
4. 手动清理辅助(临时或一次性使用)
若需快速释放空间,可手动清理旧日志,但需谨慎操作(避免误删系统关键日志)。
- 清空单个日志文件:使用
truncate
命令(保留文件属性,不影响依赖进程):sudo truncate -s 0 /var/log/syslog
- 批量清空所有.log文件:结合
find
命令快速处理:sudo find /var/log -type f -name "*.log" -exec truncate -s 0 { } \;
- 删除并重建文件:若需彻底清除(如
syslog
),可执行:sudo rm /var/log/syslog & & sudo touch /var/log/syslog
- 注意:手动删除后需确认服务是否正常运行(如
rsyslog
服务依赖/var/log/syslog
),避免因文件缺失导致服务崩溃。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何自动清理旧日志
本文地址: https://pptw.com/jishu/729903.html