dat*_*ess 13
这不仅仅是发生在你身上 :-) 问题是由于 linux 的工作方式和 Ubuntu 给你的默认设置。文件复制工具正在读取源文件的一个块,然后将其写入目标,并在每次完成写入时更新进度条。然而,为了加快速度,Linux 获取要写入的数据并立即告诉已写入的程序,同时在后台进行工作。Linux 允许将一定比例的系统内存用于此目的,这些天的内存大小通常大于整个文件,因此当实际上复制刚刚开始时,程序可以认为它已经写入了整个内容。但是,当程序试图关闭文件时,Linux 会使其等待操作完成。
在将大文件写入慢速设备(如 USB)时,您最常看到这种情况,但它也可能出现在其他情况下,并使其看起来像是计算机正在锁定。
我为“修复”问题所做的事情是告诉 Linux 缓冲更少的数据。这样一来,应用程序就无法领先于实际进度。这涉及更改内核参数,这是高级用户应该小心完成的事情。您需要将“vm.dirty_bytes=15000000”添加到/etc/sysctl.conf
echo vm.dirty_bytes=15000000 | sudo tee -a /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
然后重新启动。
这将缓冲区大小设置为 15MB,这是我选择的一个数字,大致翻译为“半秒写入快速 USB2 设备”。您可以根据需要选择更大(或更小,但可能不会太小)。
此设置的缺点是高吞吐量操作可能运行速度较慢,例如同时运行一堆文件副本。它还可能导致笔记本电脑驱动器更频繁地退出睡眠模式。
小智 7
我在使用 16GB Kingston G4 USB 3.0 随身碟的 Ubuntu 19.10 上遇到了同样的问题。文件 gnome 应用程序永远卡在进度末尾,您无法弹出 USB。我正在复制 1.2 GB 大小的电影文件。
解决方案是将随身碟格式化为 NTFS 文件系统而不是 FAT。当我这样做时,一切都工作正常。