当我将一个大文件复制到闪存驱动器时,进度条很快就到达末尾,但是它会一直保持这种状态,直到文件真正被复制到闪存驱动器。
我在网上查了这个问题,它似乎不是文件资源管理器的错误,但它似乎是 Linux 的错误。所以我的问题是:如此出色的内核怎么可能包含如此烦人的错误;而且多年来没有人修复它(即使现在这个错误仍然存在)。
PS:我使用的是 Ubuntu 15.10 和 16.04,以及默认文件管理器(nautilus)
答案1
我发现了问题,它不在文件管理器中。
临时解决方案
每次启动时执行此命令:
echo 15728640 > /proc/sys/vm/dirty_bytes
永久解决方案
将此行添加到文件末尾/etc/sysctl.conf
:
vm.dirty_bytes=15728640
解释
正在发生的情况是,内核正在主存储器(RAM)的缓冲空间中传输文件内容,并且这个空间的速度非常快。
因此,文件管理器认为文件内容已完全复制到目标位置,并尝试结束文件复制。此时,文件管理器卡住了,因为内核现在实际上正在将文件复制到目标媒体(硬盘驱动器、闪存驱动器……)。它会卡住,直到文件完全复制到目标媒体。
解决方案是限制该缓冲空间的大小,比如说15Mb
,每次达到空间限制时,强制内核将缓冲空间的内容刷新到目标媒体15Mb
。这样,文件管理器就不会收到错误的进度信息。