云服务器Ubuntu 20.04日志清理实用指南
长期运行的云服务器上,Ubuntu 20.04系统的日志文件易“悄悄发胖”——从系统运行记录到应用程序报错,各类日志不断累积,不仅占满磁盘空间,还可能因空间不足导致服务异常。掌握科学的日志清理方法,是保障云服务器稳定运行的基础技能。本文结合实际运维场景,分享从手动清理到自动化管理的全套日志处理方案。
日志文件的位置与类型识别
Ubuntu 20.04的日志集中存储在/var/log目录下,这里是系统的“日记本”,记录着从内核到应用的所有关键信息。常见日志类型包括:
- 系统通用日志syslog:记录系统服务运行状态、用户登录等综合信息;
- 内核专属日志kern.log:仅包含内核模块加载、硬件交互等底层操作记录;
- 应用程序自定义日志:如Nginx的access.log、MySQL的error.log等,路径可能分散在/var/log下的子目录(如/var/log/nginx)。
建议先通过命令`du -sh /var/log/*`查看各日志文件大小,快速定位“空间占用大户”。
手动清理:紧急释放空间的应急方案
当磁盘空间告警(如可用空间低于10%)时,需快速清理非必要日志。操作前务必确认日志无保留价值——生产环境中,建议优先备份关键日志(如最近3天的syslog),再执行清理。
备份示例(以syslog为例):
cp /var/log/syslog /var/log/syslog_$(date +%F).bak # 带日期的备份文件,避免覆盖
清理操作分两种场景:
- 删除过期日志:对于明确不再需要的旧日志(如7天前的app.log.1.gz),直接使用`rm`命令删除:
rm /var/log/app.log.1.gz /var/log/app.log.2.gz # 删除指定旧日志
- 清空当前日志:若需保留日志文件但清空内容(如避免服务重启丢失日志路径),可用重定向符清空:
> /var/log/syslog # 注意:此操作会立即清空当前syslog内容
logrotate:自动化日志轮替的核心工具
手动清理虽快,但难以覆盖日常运维需求。Ubuntu自带的logrotate工具可自动实现日志“转存-压缩-删除”全流程,是长期维护的关键。其配置分为全局策略(/etc/logrotate.conf)和应用专项策略(/etc/logrotate.d目录下的各文件)。
以syslog的典型配置(/etc/logrotate.d/rsyslog)为例:
/var/log/syslog
{
daily # 每日轮替一次
rotate 7 # 保留最近7天的日志
compress # 旧日志压缩存储(节省空间)
delaycompress # 当前日志下一次轮替时再压缩(避免正在写入的文件被压缩)
notifempty # 空日志不轮替(防止生成无意义文件)
create 640 syslog adm # 轮替后创建新日志,权限640,属主syslog:adm
postrotate # 轮替后执行的脚本(通知rsyslog服务重新读取日志文件)
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
若需立即触发轮替(如调整配置后验证效果),可执行:
logrotate -f /etc/logrotate.conf # -f参数强制执行轮替
定期任务:让日志清理成为“自动习惯”
为避免人工遗漏,建议通过cron定时任务调用logrotate。以每天凌晨2点(业务低峰期)执行为例:
crontab -e # 编辑当前用户的cron任务
在文件中添加:
0 2 * * * logrotate -f /etc/logrotate.conf # 每日2:00强制执行日志轮替
保存后,系统会自动在指定时间清理日志,无需人工干预。
掌握这些方法后,云服务器Ubuntu 20.04的日志管理将变得高效可控。无论是紧急空间释放,还是日常自动化维护,都能轻松应对,让云服务器始终保持“轻盈”状态,为业务稳定运行提供坚实支撑。