在 Linux 上如何清除内存的 Cache、Buffer 和交换空间

 

如何在 Linux 中清除缓存(Cache)?

 

每个 Linux 系统有三种选项来清除缓存而不需要中断任何进程或服务。

 

(LCTT 译注:Cache,译作“缓存”,指 CPU 和内存之间高速缓存。Buffer,译作“缓冲区”,指在写入磁盘前的存储在内存中的内容。在本文中,Buffer 和 Cache 有时候会通指。)

 

                  仅清除页面缓存(PageCache)

# sync; echo 1 > /proc/sys/vm/drop_caches

清除目录项和inode

# sync; echo 2 > /proc/sys/vm/drop_caches

清除页面缓存,目录项和inode

# sync; echo 3 > /proc/sys/vm/drop_caches

 

#!/bin/bash# 
注意,我们这里使用了 "echo 3",但是不推荐使用在产品环境中,应该使用 "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches

 

 

如何清除Linux的交换空间?

 

如果你想清除掉的空间,你可以运行下面的命令:

 

        swapoff -a && swapon -a

 

此外,了解有关风险后,您可以将上面的命令添加到cron中。

现在,我们将上面两种命令结合成一个命令,写成正确的脚本来同时清除RAM缓存和交换空间。

 

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'
或
# su -c 'echo 3 > /proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

在测试上面的命令之前,我们在执行脚本前后运行“free -m” 来检查缓存。

 

 

 

posted @ 2023-01-10 16:44  小陈运维  阅读(401)  评论(0编辑  收藏  举报  来源