--files-from <LISTFILE>
如果使用该选项并且<LISTFILE>
包含前导空格,Tar 将因 100% CPU 负载而挂起。这是为什么?
重现:给定两个任意内容的文件file1
和一个包含以下内容的file2
文件:list
file1
file2
当我发出 时tar czf test.tar.gz --files-from list
,该命令永远不会完成,系统负载约为 1。
如果我改变list
去读书
file1
file2
上述tar
命令顺利完成。
在 Ubuntu 14.04.2 LTS 服务器版本和我的 Ubuntu 14.10 桌面上都会发生这种情况;两者都有 GNU tar 1.27.1。
答案1
我已经重现了这种行为。看起来像一个错误。
我修复它降级到 tar v1.26,从这里https://packages.debian.org/wheezy/amd64/tar/download(如果您使用 Debian/Ubuntu,请下载相应的 .deb 版本并使用 dpkg -i 安装)。
答案2
我无法重现您得到的结果,尽管我可以让 tar 在执行您所描述的操作时抛出错误。
忽略这一点,在文件名之前提供带有空格的列表是不正确的;空格在 Unix 中并不是无足轻重的。如果您告诉 tar 文件名为“file2”,则 tar 会查找名为“file2”的文件,如果没有找到,则会出现错误。
如果重命名 file2:
mv file2 ' file2'
然后运行tar,就可以了。
无论哪种方式,tar 都应该出错,而不是像它在您的系统上那样崩溃。