有一种方法可以在Linux中运行命令而不caching结果,即:
nocache cat big_file.txt
有没有办法使这个nocache模式自动? 像一个全球性的设置。
问题:我有很多使用cp或find或其他标准命令的供应商脚本,我不希望他们混淆我的caching。
即使您不需要担心,只需要以root身份执行此命令即可删除内存caching的文件
sync && echo 3 > /proc/sys/vm/drop_caches
在这里你可以find更多的信息。
编辑:如果你回声4,然后Linux将完全禁用文件的caching,这是你正在寻找的链接。
我真的想阻止这样做,因为它可能最终会造成干扰。 你现在基本上会迫使更多的IO,这可能(取决于你的设置)最终争夺与IO的mysql,这将是一样糟糕。
如果你真的必须,在一个单独的目录中为cp / find / etc创build一个包装,并且首先将它填充到供应商脚本执行环境的PATH中。 即
mkdir /opt/evil echo -en "#! /bin/bash\nexec nocache /bin/cp \"\${@}\"\n" >/opt/evil/cp chmod a+x /opt/evil/cp # repeat for find and any other things you want to be run with nocache export PATH=/opt/evil:${PATH} vendor-script.sh
另外 – 如果你使用InnoDB,IIRC它是自己的进程内caching,并不依赖于Linux页面caching。
如果我正确理解了alphamikevictor的链接,在drop_caches中回显“4”只会禁用日志消息,而不是caching。
我们可以为〜/ .bashrc添加一个别名给各种命令。 例如:
别名cp ='nocache cp'
(假设bash是你的shell)
同样的事情可以放在/etc/bash.bashrc中,以影响系统上的所有bash用户。