Linux 下清理系统缓存并释放内存

本文介绍如何在Linux系统中手动清理缓存以释放物理内存。首先使用sync命令将内存中的更改同步到磁盘,然后通过echo命令配合drop_caches参数来释放不同类型的缓存。文章还提供了检查内存状态的方法及清理磁盘空间的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching

因此我们很有必要手动清理系统缓存释放内存。

 

我们在清理缓存前应该先

sync下

因为系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中去,因为怕你在操作的过程中因为断电等原因遗失数据,所以在你操作过程中会把文件资料先缓存。

所以我们在清理缓存先要先把buffe中的数据先写入到硬盘中,sync命令

 

sync

手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

 

最后,输入手动释放内存的命令

echo 3 > /proc/sys/vm/drop_caches 

drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes

 

3:释放所有缓存

 

 

free -h

free -h #看内存是否已经释放掉了。

 

total——总物理内存
used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存
free——完全未被使用的内存
shared——应用程序共享内存
buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)
cached——缓存,用于已打开的文件

 

 

 

补充更新:2018.06.27

 1.Linux 磁盘空间清理

执行   lsof | grep deleted发现有大量刚刚删除文件的进程存在,kill掉进程(或者重启进程)   OK

 

2. 用du检查发现各目录占用的空间:

 

3.文件恢复问题

参考 https://blog.youkuaiyun.com/dutsoft/article/details/51248761

 

 

4.快速定位较大文件目录并清理硬盘

分以下步骤进行:

 1)查看磁盘信息:df -lh

Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           769M   68M  702M   9% /run
/dev/sda6       265G  252G     0 100% /
tmpfs           3.8G  126M  3.7G   4% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/loop0       87M   87M     0 100% /snap/core/4830
/dev/loop1       87M   87M     0 100% /snap/core/4650
/dev/loop2      254M  254M     0 100% /snap/electronic-wechat/7
/dev/loop3      198M  198M     0 100% /snap/polarr/3
/dev/loop4       87M   87M     0 100% /snap/core/4917
tmpfs           769M  100K  769M   1% /run/user/1000

可以看到系统硬盘/dev/sda6 占用100%了

2)循环定位最大文件目录:du -h --max-depth=1

显然最大的文件目录在/home下

接着,循环定位:

可以看到,最大的文件其实在 ~/.local/share/Trash 下,而这个正是LInux下的垃圾箱(可以理解为windows回收站)

平常想清理的话直接使用

sudo rm -rf ~/.local/share/Trash

最终我们成功清理了121G 的垃圾占用

3)定位最大文件

ls -lhS

 

4)确认删除的文件是否仍被占用

/usr/sbin/lsof |grep deleted

根据第二列的pid,输入 kill -9 xxxx 杀掉进程xxxx

 

/dev/loop 100%的时候清理:

我们可以看到图中的loo0-loop11占用100%,我们只要清理掉一下就可以了.

命令:

sudo apt autoremove --purge snapd

 

### 如何在Linux系统释放磁盘空间 #### 使用BleachBit工具清理磁盘空间 为了有效地清理Linux系统的磁盘空间,可以利用专门设计的应用程序如BleachBit。此应用程序提供了一系列功能来帮助管理存储资源,包括删除临时文件、缓存数据以及其他不再需要的项目[^1]。 安装BleachBit可以通过包管理器完成,在基于Debian或Ubuntu的发行版上执行如下命令: ```bash sudo apt-get update && sudo apt-get install bleachbit ``` 对于其他类型的Linux分发版本,则应查阅相应的文档找到适合自己的安装方法。 启动BleachBit之后,可以选择要清除的内容类别点击“预览”,这一步骤会显示哪些文件将会被移除;确认无误后再按下“删除”。 #### 手动查找大文件和目录 除了借助软件外,还可以通过命令行手动寻找占用大量空间的对象。下面是一些常用的技巧: - 列出当前路径下最大的前十个文件夹及其大小: ```bash du -sh */ | sort -rh | head -n 10 ``` - 查找特定位置内超过指定尺寸(例如1GB)的所有常规文件: ```bash find /path/to/search -type f -size +1G ``` 这些操作有助于识别潜在的空间浪费源,允许用户决定是否有必要保留它们或者采取行动减少其体积。 #### 清理旧的日志和其他不必要的文件 日志记录可能会随着时间积累而变得非常庞大。定期审查`/var/log`中的条目,考虑配置轮转策略以防止过度增长。同样地,检查是否有任何未使用的ISO映像或其他大型二进制文件存在于用户的家目录或者其他公共区域之中。 最后提醒一点,当涉及到重要资料时务必谨慎行事,确保不会意外丢失有价值的信息。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值