像任何其他操作系统一样,GNU/Linux有效地实现了内存管理,甚至更多。然而,如果有任何进程正在侵蚀你的记忆,你必须清除它。Linux提供了一种刷新或清除RAM缓存的方法。
在Linux中如何清除缓存?每个Linux系统都有三个选项可以在不中断任何进程或服务的情况下清除缓存。
1,只清除缓存页面。
sync; echo 1 gt; /proc/sys/vm/drop_caches2.清除目录条目和信息节点
sync; echo 2 gt; /proc/sys/vm/drop_caches3.清除、缓存页面、目录条目和信息节点
sync; echo 3 gt; /proc/sys/vm/drop_caches上述命令的描述:
同步将刷新文件系统缓存,该命令通过“;”分离、顺序执行、shell在执行序列中的每个命令之前等待终止。正如内核文档中提到的,写入drop_cache将会清除空缓存,而不会杀死任何应用程序/服务。echo命令完成写文件的工作。
如果您必须清除磁盘缓存,第一个命令在企业和生产环境中是最安全的,“… echo 1 >: …”只会清除页面缓存。
不建议在生产环境中使用上述第三个选项来“… echo 3 >”。,除非你知道自己在做什么,因为这将清除缓存页面、目录条目和inodes。
在Linux上用内核释放缓冲区和缓存是个好主意吗?
当您请求许多想要检查的设置时,如果它实际上是专门在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 gt; /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计划任务。
在生产环境中自动清除服务器上的RAM是个好主意吗?
不要!不是的。请考虑这样一种情况,您已经安排了一个脚本在每天下午2点清除RAM缓存。该脚本将在每天下午2点执行并刷新您的RAM缓存。在一天中的任何时候,您的网站用户的在线量都可能超出预期,并向您的服务器请求资源。同时,调度程序运行脚本并清除缓存中的所有内容。当所有用户从磁盘读取数据时,这将导致服务器崩溃并损坏数据库。
因此,清除缓存只是必要的,并且在你的预期之内,否则你将是一个货物邪教系统管理员。
如何清除Linux的交换空间?如果您想清除exchange 空房间,您可以运行以下命令:
# swapoff -a amp;amp; swapon -a此外,在了解风险之后,您可以将上面的命令添加到cron中。
现在,我们将上述两个命令合并为一个命令,并编写正确的脚本来同时清除RAM缓存和swap 空。
# echo 3 gt; /proc/sys/vm/drop_caches amp;amp; swapoff -a amp;amp; swapon -a amp;amp; printf 'n%sn' 'Ram-cache and Swap Cleared'或者
su -c 'echo 3 gt;/proc/sys/vm/drop_caches' amp;amp; swapoff -a amp;amp; swapon -a amp;amp; printf 'n%sn' 'Ram-cache and Swap Cleared'在测试上面的命令之前,我们首先运行“free -m ”,然后执行脚本来检查缓存。
现在,如果你喜欢这篇文章,别忘了观看并与他人分享。