Linux清理垃圾

Linux 清理“内存/垃圾”可以分几类来做。先说重点:不要频繁手动清内存缓存,Linux 会自动把空闲内存拿来做缓存,这是正常的,不等于内存泄漏。

1. 查看内存占用

1
free -h

重点看这一行:

1
available

如果 available 还很多,就不用清。

也可以看进程:

1
top

或者更舒服:

1
htop

没有的话安装:

1
sudo apt install htop

2. 临时清理内存缓存

这个会释放 page cache、dentries、inodes:

1
2
sudo sync
echo 3 | sudo tee /proc/sys/vm/drop_caches

也可以分开:

1
2
3
4
5
6
7
8
# 只清 page cache
echo 1 | sudo tee /proc/sys/vm/drop_caches

# 清 dentries 和 inodes
echo 2 | sudo tee /proc/sys/vm/drop_caches

# 全部清
echo 3 | sudo tee /proc/sys/vm/drop_caches

一般用这个就够:

1
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

注意:这不是“加速神器”,清完缓存后,系统可能反而会变慢一点,因为缓存要重新建立。


3. 清理 apt 缓存

Ubuntu / Debian:

1
2
3
sudo apt clean
sudo apt autoclean
sudo apt autoremove -y

含义:

1
2
3
apt clean       清掉下载过的安装包缓存
apt autoclean 清掉过期安装包
apt autoremove 删除不用的依赖

4. 清理日志

查看日志占用:

1
journalctl --disk-usage

只保留最近 7 天:

1
sudo journalctl --vacuum-time=7d

或者限制日志大小到 500M:

1
sudo journalctl --vacuum-size=500M

5. 清理用户缓存

1
rm -rf ~/.cache/*

更稳一点可以先看大小:

1
du -sh ~/.cache

如果你用的是桌面 Linux,这里可能会清掉一些软件缓存,但通常不会有大问题。


6. 清理 Docker 垃圾

如果你装了 Docker,这个最容易吃空间:

1
docker system df

清理没用的容器、镜像、网络、构建缓存:

1
docker system prune -a

如果也要清理 volume:

1
docker system prune -a --volumes

小心:--volumes 可能删除数据库数据卷,别随便用。


7. 查找大文件

看根目录各文件夹大小:

1
sudo du -h --max-depth=1 / | sort -hr

看当前目录大小:

1
du -h --max-depth=1 . | sort -hr

查找超过 1G 的文件:

1
sudo find / -type f -size +1G 2>/dev/null

8. 一键清理常用命令

Ubuntu / Debian 可以用这个:

1
2
3
4
5
6
sudo apt autoremove -y
sudo apt autoclean
sudo apt clean
sudo journalctl --vacuum-time=7d
rm -rf ~/.cache/*
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

如果你用 Docker,再加:

1
docker system prune -a

9. 如果是内存被某个进程吃满

找出最吃内存的进程:

1
ps aux --sort=-%mem | head -20

然后按需结束:

1
kill PID

不行再强杀:

1
kill -9 PID

最推荐你先跑这几个:

1
2
3
4
free -h
df -h
ps aux --sort=-%mem | head -20
sudo du -h --max-depth=1 / | sort -hr

这样能判断到底是 内存不够,还是 磁盘垃圾太多,别上来就一顿 rm -rf,Linux 很怕莽夫操作。