清理 Linux 系统内存 Cache
每个 Linux 系统都有三个选项可以在不中断任何进程或服务的情况下清除缓存。本篇代码以 root 身份在 Ubuntu 18.04演示。
仅清除页面缓存(Clear PageCache only)
1 | sync; echo 1 > /proc/sys/vm/drop_caches |
清除目录项和inode(Clear dentries and inodes)
1 | sync; echo 2 > /proc/sys/vm/drop_caches |
清理三者(Clear PageCache, dentries and inodes)
1 | sync; echo 3 > /proc/sys/vm/drop_caches |
同步 (sync
) 将刷新文件系统缓冲区。命令以 “;” 分隔依次运行。在执行序列中的下一个命令之前,shell 等待每个命令终止。正如内核文档中提到的,写入 drop_cache 将清除缓存而不杀死任何应用程序/服务,命令 echo 正在执行写入文件的工作。
如果您必须清除磁盘缓存,第一个命令在企业和生产中是最安全的“…echo 1 > …”。只会清除 PageCache。不建议在生产中使用“…echo 3 >”上方的第三个选项,直到您知道自己在做什么,因为它会清除 PageCache、dentries 和 inode。
定时清理缓存
1 | vim clearcache.sh |
写入如下内容
1 |
|
1 | chmod 755 clearcache.sh |
以 root 身份创建定时清理任务
1 | crontab -e |
写入如下内容,每天0点,12点,18点的0分清理缓存
1 | 0 0,12,18 * * * /path/to/clearcache.sh |
不建议定时清理RAM
参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 J. Xu!
评论