Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么第二次cp命令更快_Linux_Shell - Fatal编程技术网

Linux 为什么第二次cp命令更快

Linux 为什么第二次cp命令更快,linux,shell,Linux,Shell,当我执行cp folder1 folder2-rf时,第一次大约需要10分钟。但是当我执行第二个命令时,cp folder1 folder3-rf,大约需要1分钟。folder1包含大约100000个文件 为什么第二次有运行时改进 第一次从硬盘读取文件时 第二次从内存中读取文件 与大多数操作系统一样,Linux将访问的文件/块缓存在内存中。这是因为页面缓存。运行sync;echo 3>/proc/sys/vm/drop_缓存使其再次变慢 进一步阅读: 这是因为文件现在存储在内存缓存中。第一

当我执行
cp folder1 folder2-rf时,第一次大约需要10分钟。但是当我执行第二个命令时,
cp folder1 folder3-rf
,大约需要1分钟。
folder1
包含大约100000个文件


为什么第二次有运行时改进

第一次从硬盘读取文件时

第二次从内存中读取文件


与大多数操作系统一样,Linux将访问的文件/块缓存在内存中。

这是因为页面缓存。运行
sync;echo 3>/proc/sys/vm/drop_缓存
使其再次变慢

进一步阅读:


    • 这是因为文件现在存储在内存缓存中。第一次执行此命令时,它必须从磁盘读取文件,这要慢得多。如果您想运行任何形式的使用磁盘访问的基准测试,例如添加“cat MYFILE>/dev/null”,那么记住这一点也很重要在执行实际的基准测试以获得一致的结果之前。

      只是猜测:可能是因为
      folder1
      的内容在内存中,以便可以更快地复制?小挑剔:这里调用
      sync
      是毫无用处的。想要同步的原因是无法清除脏对象。但是,
      sync
      只启动写回,它并不是真正的“同步”(也就是说,在写回完成之前阻塞)。因此,调用sync后立即删除缓存与不同步几乎是一样的。