像任何其余的操作系统一样,GNU / Linux曾经无效地施行了内存治理甚至更多。然而,如果有任何过程正在鲸吞你的内存,你要革除它,Linux提供了一个办法来刷新或革除RAM缓存。

在Linux中如何革除缓存?

每一个Linux零碎有三个选项来革除缓存而不中断任何过程或服务。

1,仅革除缓存页

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

2,革除目录项和inodes

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

3,革除,缓存页,目录项和inodes

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

上述命令的阐明:

sync将刷新文件系统缓存,命令通过“;”分隔,程序执行,shell期待终止在序列中的每一个命令执行之前。正如内核文档中提到的,写到drop_cache将清空缓存而不杀死任何应用程序/服务,echo命令做写入文件的工作。

如果你必须革除磁盘高速缓存,第一个命令在企业和生产环境中是最平安,“…echo 1> …”只会革除页缓存。

不倡议应用下面第三个选项在生产环境中“…echo 3 >” ,除非你明确本人在做什么,因为它会革除缓存页,目录项和inodes。

在Linux上开释Buffer和Cache要用到内核是否是个好主见?

当你申请许多设定想要查看时,如果它实际上是专门施行对I/O 宽泛的基准测试,那么你可能须要革除缓存。你能够如上所示删除缓存,无需重新启动零碎即无需停机。

Linux被设计成它在寻找磁盘之前到磁盘缓存寻找的形式。如果它发现该资源在缓存中,则该申请不达到磁盘。如果咱们清理缓存,磁盘缓存将没有用途,零碎会到磁盘上寻找资源。

此外,当革除缓存后它也将减慢零碎运行速度,零碎会从新加载每一个被申请的资源再次到磁盘缓存中。

当初,咱们将通过一个cron任务调度器创立一个shell脚本在每天下午2点主动革除RAM缓存。

创立一个shell脚本clearcache.sh并在其中增加以下行:

#!/bin/bash# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"echo "echo 3 > /proc/sys/vm/drop_caches"

给clearcache.sh文件设置执行权限

# chmod 755 clearcache.sh

当初,当你须要革除RAM缓存时只须要调用脚本。

当初设置一个定时工作来革除RAM缓存每天在下午2点,关上crontab进行编辑。

# crontab -e

增加以下行,保留并退出。

0 3 * * * /path/to/clearcache.sh

无关如何创立一个定时工作,更多细节你能够查看咱们的文章11 Cron Scheduling Jobs。

在生产环境的服务器上主动革除RAM是否是一个好主见?

不!它不是。想想一个状况,当你曾经预约脚本来革除RAM缓存每天在下午2点。每天下午2点该脚本会执行并刷新你的RAM缓存。在一天中的任何时候,您网站用户的在线量可能会超过预期的,并从你的服务器申请资源。同时调度器运行着脚本,并在高速缓存中革除所有。当所有的用户都从磁盘读取数据时,这将导致服务器解体并损坏数据库。

因而,革除缓存仅在必要时并且在你的预料之中,否则你就是个Cargo Cult System Administrator。

如何革除Linux的替换空间?

如果你想革除替换空间,你能够运行上面的命令:

# swapoff -a && swapon -a

此外,理解无关危险后,您可能会将下面的命令增加到cron中。

当初,咱们将下面两种命令联合成一个命令写出正确的脚本来同时革除RAM缓存和替换空间。

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf 'n%sn' 'Ram-cache and Swap Cleared'

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

在测试下面的命令之前,咱们先运行“free -m” 而后执行脚本查看缓存。

就是当初,如果你喜爱这篇文章,不要遗记点个在看与转发分享反对一下。

原文:http://www.tecmint.com/clear-...