在腾讯轻量应用服务器(Tencent Cloud Lighthouse)上清理日志和缓存,核心原则是“精准定位、安全删除、定期自动化”。盲目使用 rm -rf / 或全盘清空会导致服务宕机或系统崩溃。
以下是一套基于 Linux 主流发行版(如 CentOS, Ubuntu, Debian)的标准化操作指南,分为常规清理、深度清理和自动化维护三个层级。
一、 先诊断:占用空间是谁在占?
在执行任何删除操作前,务必确认哪些文件真正占用了空间。
1. 查看磁盘整体使用情况
df -h
重点关注 /(根分区)和 /var 的使用率。如果接近 90%,必须立即清理。
2. 查找大文件或目录
# 从根目录开始,查找大于 100M 的文件(耗时较长,建议加 sudo)
sudo find / -type f -size +100M 2>/dev/null
# 或者查看每个目录的大小,快速定位“元凶”
sudo du -sh /* | sort -hr | head -n 10
通常占用大户集中在:
/var/log/:系统与应用日志/var/lib/docker/:Docker 镜像与容器层/tmp/:临时文件/usr/share/doc/或/usr/share/man/:文档(可酌情清理)
二、 精准清理:分场景操作
场景 1:清理系统与应用日志(最常见)
注意: 不要直接 rm 正在被写入的日志文件,这可能导致程序报错。应使用截断方式或直接清理已归档的旧日志。
A. 清理 Nginx/Apache 日志
Nginx 默认配置下,access.log 和 error.log 会无限增长。
# 方法一:清空当前日志(推荐,保留文件句柄)
> /var/log/nginx/access.log
> /var/log/nginx/error.log
# 方法二:删除旧的压缩日志(假设按天分割)
sudo find /var/log/nginx/ -name "*.gz" -mtime +7 -delete
sudo find /var/log/nginx/ -name "*.log.*" -mtime +30 -delete
B. 清理系统日志 (syslog/journal)
# 如果使用 systemd-journald(Ubuntu/CentOS 8+ 默认)
# 限制日志最大占用为 100M,并清理历史日志
sudo journalctl --vacuum-size=100M
# 或者直接清理超过 3 天的日志
sudo journalctl --rotate --vacuum-time=3d
C. 清理邮件队列日志(Postfix/Dovecot)
sudo find /var/spool/postfix/deferred -type f -delete
sudo find /var/spool/postfix/maildrop -type f -delete
场景 2:清理 Docker 资源(如果运行了容器)
Docker 是轻量服务器上的“存储杀手”,尤其是未使用的镜像和悬空卷。
# 警告:这会删除所有停止的容器、未使用的网络和悬空镜像
docker system prune
# 更彻底:同时删除未被任何容器使用的数据卷(谨慎操作!)
docker system prune -a --volumes
场景 3:清理包管理器缓存
A. Ubuntu/Debian (apt)
# 清理已下载的 .deb 安装包缓存
sudo apt-get clean
# 自动移除不再需要的依赖包
sudo apt-get autoremove
B. CentOS/RHEL (yum/dnf)
# 清理 yum 缓存
sudo yum clean all
场景 4:清理临时文件
# 清理 /tmp 下超过 10 天未访问的文件
sudo find /tmp -type f -atime +10 -delete
三、 自动化维护:防止再次爆满
手动清理治标不治本,建议配置定时任务(Cron)。
1. 配置 Logrotate(日志轮转)
大多数 Linux 发行版已安装 logrotate,但需确保配置正确。
检查配置文件:
cat /etc/logrotate.conf
确保类似如下设置(以 Nginx 为例):
sudo nano /etc/logrotate.d/nginx
添加内容:
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
然后测试配置是否有效:
sudo logrotate -d /etc/logrotate.d/nginx
2. 设置 Cron 定时任务
编辑 crontab:
crontab -e
添加以下行,实现每周日凌晨 2 点执行清理:
0 2 * * 0 /usr/bin/docker system prune -f > /dev/null 2>&1
0 2 * * 0 /usr/bin/journalctl --vacuum-time=7d > /dev/null 2>&1
0 2 * * 0 /usr/bin/apt-get clean > /dev/null 2>&1
四、 高级技巧:扩容与监控
1. 开启云盘自动扩容
腾讯轻量应用服务器支持云盘容量升级。建议在控制台将系统盘从 40GB 升级到 60GB 或 100GB,成本极低,但能大幅减少紧急清理的压力。
2. 启用云监控告警
在腾讯云控制台 -> 云监控 -> 主机监控中,设置磁盘使用率告警阈值(如 85%),当磁盘即将满载时通过短信/微信通知你,而非等到服务不可用才发现。
3. 使用工具辅助分析
如果空间依然紧张,可使用 ncdu 进行交互式磁盘分析:
sudo apt install ncdu # Ubuntu
sudo yum install ncdu # CentOS
sudo ncdu /
它能直观显示每个文件夹的大小,方便你手动决策删除哪些非必要文件。
⚠️ 重要注意事项
- 禁止随意删除
/var/lib/docker/image等底层路径:除非你清楚自己在做什么,否则只使用官方提供的清理命令(如docker system prune)。 - 备份关键数据:在执行大规模删除前,建议对网站代码、数据库进行快照备份。
- 避免使用
rm -rf通配符:例如rm -rf *.log可能误删其他重要文件,始终使用绝对路径或明确文件名。 - 合规性提示:仅清理你自己服务器上的资源,不得尝试访问或修改他人数据或公共基础设施日志。
通过以上步骤,你可以安全、高效地管理腾讯轻量服务器的存储空间,保持系统稳定运行。
CLOUD云枢