磁盘空间已满时
磁盘满了以后,程序会因无法保存文件而出错,或 DB 停止运行,严重时连 SSH 也难以连接。以下是查找什么占用了空间并安全清理的方法。
1. 查看剩余容量
df -h /
如果 Use% 超过 90%,就需要清理了。
2. 查找哪些占用较大
sudo du -xh / --max-depth=1 2>/dev/null | sort -h | tail -n 15
依次进入最下面显示的大文件夹,重复同样的命令。例如,如果 /var 较大:
sudo du -xh /var --max-depth=1 2>/dev/null | sort -h | tail -n 15
安装 ncdu 后,可以用方向键在文件夹之间切换查看大小,更加方便。(按 q 退出)
sudo apt install -y ncdu
sudo ncdu -x /
3. 可以安全删除的内容
系统日志
sudo journalctl --disk-usage # 查看当前日志大小
sudo journalctl --vacuum-size=200M # 只保留最近的 200MB,其余清理
安装文件缓存和不用的软件包
sudo apt clean
sudo apt autoremove -y
如果您使用 Docker
Docker 中不用的镜像和构建缓存不断累积,会占用大量空间。
docker system df # 查看 Docker 占用的空间
docker system prune # 清理已停止的容器、不用的镜像、网络、构建缓存
如果像
docker system prune -a --volumes这样加上选项,可能连存有数据的卷也会被删除。请务必在确认会删除哪些内容后再使用。
pm2 日志
如果您用 pm2 运行机器人或应用,日志文件会不断变大。
pm2 flush # 清空迄今为止累积的日志
pm2 install pm2-logrotate # 今后日志超过一定大小时自动清理
Minecraft 日志和旧备份
Minecraft 服务器文件夹的 logs 中较旧的 .log.gz 文件可以删除。服务器中积存的备份文件,请下载到本地电脑后,从最旧的开始删除。
4. 删除后容量没有变化
正在运行的程序打开的文件,即使删除了,在该程序关闭之前空间也不会释放。重启该程序或重启服务器后即可生效。
sudo lsof +L1 2>/dev/null | head # 已删除但仍处于打开状态的文件列表
如果没有 lsof,请用 sudo apt install -y lsof 安装。
注意事项
- 请不要直接删除
/bin、/usr、/etc、/boot、/lib等系统文件夹中的文件。服务器可能会无法启动。 - 如果清理后仍然不够,请考虑迁移到磁盘更大的套餐。迁移到新服务器
Windows 服务器
- 在 设置 → 系统 → 存储 → 临时文件 中选择不需要的项目进行清理。
- 确认下载文件夹和回收站中是否还留有大文件。