我正在使用 Ubuntu 的存档管理器 (file-roller) 来压缩 (tar.gz) 一些大文件和目录。
这通常需要很长时间,因为该程序仅使用我的八个 CPU 核心中的一个。
有没有办法强制档案管理器使用我所有的 CPU 核心?
答案1
我一直在尝试自己寻找这个问题的答案,我可以报告部分成功:p7zip 虽然没有充分利用所有核心,但似乎至少在压缩时会使用多个核心。在我的双核系统上,它几乎充分利用了两个核心,而在家庭成员的四核上,它充分利用了一个核心,其余三个核心以大约一半的负载运行,在 30% 到 80% 左右之间变化。不过,提取似乎根本不是多线程的,因为它充分利用了一个核心,其余核心则处于空闲状态。
我尝试安装各种支持多核的压缩器并从 /usr/bin 创建指向它们的链接,但 file roller 忽略了它们。我在研究中发现的只是某个德国论坛上的一个提示(如果 goog 的翻译准确的话),file-roller 源代码中显然存在硬编码路径,因此有人建议用指向(理论上与命令行兼容的)多核替代品(如 pigz)的链接替换 /bin 中的原始二进制文件,但我还不敢亲自尝试。
答案2
MoTLD 提到的 2012 年论坛主题讲述了以下解决方案:
创建一些软链接来/usr/override
代替pigz
普通lbzip2
的二进制文件。如下所示:
ls -l /usr/override
total 0
lrwxrwxrwx 1 root root 17 Oct 23 21:20 bunzip2 -> /usr/bin/lbunzip2
lrwxrwxrwx 1 root root 15 Oct 23 21:20 bzcat -> /usr/bin/lbzcat
lrwxrwxrwx 1 root root 15 Oct 23 21:19 bzip2 -> /usr/bin/lbzip2
lrwxrwxrwx 1 root root 15 Oct 23 21:19 gunzip -> /usr/bin/unpigz
lrwxrwxrwx 1 root root 13 Oct 23 21:19 gzip -> /usr/bin/pigz
因此,像 这样的程序tar -cz
正在使用多个核心。尽管如此,file-roller
似乎不使用这些符号链接,但您可以使用xarchiver
,这样它也会使用多个核心。