VPS清理垃圾方法
一、清理系统日志
du -h /var/log这是系统默认的日志目录,如果不改 SSH 端口,和禁用密码登陆,必然会产生大量日志,btmp、syslog、auth.log 这几个日志能大到占用 G 以上的空间。
你要用的是 echo 来清空日志,这样就可以马上释放被占用的空间
echo > /var/log/btmp
echo > /var/log/syslog
echo > /var/log/auth.log此外,即便你已经修改了 SSH 端口和禁用了密码登陆,没有上面 3 个日志占用空间,也会出现是 /var/log/journal 在吃硬盘,可以通过以下命令限制占用大小,下面 100M 就是限制日志最大为 100M(可以根据你个人情况修改)
journalctl --vacuum-time=1d && journalctl --vacuum-size=1M && systemctl restart systemd-journald.service二、清理 Docker 日志
1. 查看各个容器的 log 文件大小
find /var/lib/docker/containers/ -name *-json.log |xargs du -sh

2. 执行清理
$ cat /dev/null > /var/lib/docker/containers/dfe25896671f0def031c5ffeb12dd335f7f54212c6ca5d3aca1c3f50b5e1eec4/dfe25896671f0def031c5ffeb12dd335f7f54212c6ca5d3aca1c3f50b5e1eec4-json.log
3. 脚本化清理
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========" chmod +x clean_docker_log.sh
./clean_docker_log.sh备注:如果 docker 容器正在运行,那么使用 rm -rf 方式删除日志后,通过 df -h 会发现磁盘空间并没有释放。原因是在 Linux 或者 Unix 系统中,通过 rm -rf 或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是 cat /dev/null > *-json.log,当然你也可以通过 rm -rf 删除后重启 docker。
三、一些清理的命令
sudo apt clean # 清除下载的安装包缓存
sudo apt autoclean # 清除过期的缓存
sudo rm -rf /var/lib/apt/lists/*
sudo apt clean #Docker 的安装包缓存可删除
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/* #系统临时文件
sudo apt remove linux-image-5.10.0-33-amd64 linux-image-5.10.0-28-amd64 #删除旧的内核文件
sudo update-grub
sudo apt autoremove #删除不再需要的依赖包
sudo journalctl --vacuum-time=7d #删除 7 天前的日志
docker system prune -a -f --volumes #Docker 的未使用资源(镜像、容器、网络),安装了没启动的也会被删除