如何在nocache模式下自动运行标准的linux命令?

有一种方法可以在Linux中运行命令而不caching结果,即:

nocache cat big_file.txt 

有没有办法使这个nocache模式自动? 像一个全球性的设置。

问题:我有很多使用cpfind或其他标准命令的供应商脚本,我不希望他们混淆我的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用户。