与任何其他操作系统一样,GNU/Linux有效地实现了内存管理甚至更多。但是,如果任何进程正在占用您的内存并且您想清除它,Linux提供了一种刷新或清除RAM缓存的方法。如何在Linux中清除缓存?每个Linux系统都有三个选项可以在不中断任何进程或服务的情况下清除缓存。1、只清除缓存页面同步;echo1>/proc/sys/vm/drop_caches2,清除目录条目和inodessync;echo2>/proc/sys/vm/drop_caches3,清除缓存页面、目录条目和inodessync;echo3>/proc/sys/vm/drop_caches上面命令的解释:sync会刷新文件系统缓存,命令之间用“;”隔开,顺序执行,shell在序列中的每个命令执行前等待终止执行。如内核文档中所述,写入drop_cache将清空缓存而不会杀死任何应用程序/服务,而echo命令会完成写入文件的工作。如果必须清除磁盘缓存,第一个命令在企业和生产环境中是最安全的,“...echo1>...”只会清除页面缓存。除非您确切知道自己在做什么,否则不建议在生产中使用“...echo3>”上方的第三个选项,因为它会清除缓存的页面、目录条目和索引节点。在Linux上使用内核释放Buffer和Cache是个好主意吗?当你请求很多你想检查的设置时,如果它实际上是在专门做一个I/O范围的基准测试,那么你可能想要清除缓存。您可以如上所示删除缓存而无需重新启动系统而无需停机。Linux的设计方式是先查看磁盘缓存,然后再查看磁盘。如果它在缓存中找到资源,则请求不会到达磁盘。如果我们清除缓存,磁盘缓存就没有用了,系统会去磁盘上寻找资源。此外,清除缓存时也会降低系统速度,系统会重新加载每个请求的资源到磁盘缓存中。现在,我们将通过cron任务调度程序创建一个shell脚本,以在每天下午2点自动清除RAM缓存。创建一个shell脚本clearcache.sh并在其中添加以下行:#!/bin/bash#注意,我们使用的是“echo3”,但不建议在生产中使用“echo1”echo“echo3>/proc/sys/vm/drop_caches"设置clearcache.sh文件的执行权限#chmod755clearcache.sh现在,当你需要清除RAM缓存时,只要调用脚本即可。现在设置一个cron作业,每天下午2点清除RAM缓存,打开crontab进行编辑。#crontab-e添加以下行,保存并退出。03***/path/to/clearcache.sh有关如何创建cron作业的更多详细信息,您可以查看我们的文章11CronSchedulingJobs。自动清除生产服务器上的RAM是个好主意吗?不!它不是。考虑这样一种情况,您已安排一个脚本在每天下午2点清除RAM缓存。每天下午2点,此脚本将执行并刷新您的RAM缓存。在一天中的任何时候,您的网站用户可能比预期更在线,并向您的服务器请求资源。同时,调度程序运行脚本并清除缓存中的所有内容。当所有用户都从磁盘读取时,这会使服务器崩溃并损坏数据库。因此,仅在必要时和您期望的时候清除缓存,否则您就是CargoCult系统管理员。如何清除Linux中的交换空间?如果要清除交换空间,可以运行以下命令:#swapoff-a&&swapon-a另外,了解风险后,可以将上述命令添加到cron。现在,我们将以上两个命令合并为一个命令来编写正确的脚本来同时清除RAM缓存和交换空间。#echo3>/proc/sys/vm/drop_caches&&swapoff-a&&swapon-a&&printf'n%sn''Ram-cacheandSwapCleared'或者su-c'echo3>/proc/sys/vm/drop_caches'&&swapoff-a&&swapon-a&&printf'n%sn''Ram-cacheandSwapCleared'在测试上述命令之前,我们运行“free-m”并执行脚本来检查缓存。到此为止,如果喜欢这篇文章,别忘了点击观看转发,分享支持哦。原文:http://www.tecmint.com/clear-...
