1

在虚拟 Ubuntu 服务器上本地安装了 GNU Parallel:

$uname -a
Linux #### 2.6.32-43-server #97-Ubuntu SMP Wed Sep 5 16:56:41 UTC 2012 x86_64 GNU/Linux

并行运行时,我在 STDERR 上收到以下错误:

$parallel echo ::: A B C
Error unlinking file ./rTrUcTv2ZS using unlink0 at /home/######/bin/parallel line 5529

关于这意味着什么以及如何解决它的任何建议?

我已经调查过的事情:

  • 权限我对所有文件和目录都有读写权限。
  • 错误安装这可能是错误的安装。要安装我使用./configure --prefix=$HOME. 这是 configure.log 的输出:

    This file contains any messages produced by compilers while
    running configure, to aid debugging if configure makes a mistake.
    
    It was created by parallel configure 20140622, which was
    generated by GNU Autoconf 2.69.  Invocation command line was
    
    $ ./configure --prefix=/home/######
    
    ## --------- ##
    ## Platform. ##
    ## --------- ##
    
    hostname = ######
    uname -m = x86_64
    uname -r = 2.6.32-43-server
    uname -s = Linux
    uname -v = #97-Ubuntu SMP Wed Sep 5 16:56:41 UTC 2012
    
    /usr/bin/uname -p = unknown
    /bin/uname -X     = unknown
    
    /bin/arch              = unknown
    /usr/bin/arch -k       = unknown
    /usr/convex/getsysinfo = unknown
    /usr/bin/hostinfo      = unknown
    /bin/machine           = unknown
    /usr/bin/oslevel       = unknown
    /bin/universe          = unknown
    

奇怪的是缺少的是uname -p. lscpu 显示:

Architecture:          x86_64
CPU op-mode(s):        64-bit
CPU(s):                48
Thread(s) per core:    1
Core(s) per socket:    12
CPU socket(s):         4
NUMA node(s):          8
Vendor ID:             AuthenticAMD
CPU family:            16
Model:                 9
Stepping:              1
CPU MHz:               800.000
Virtualization:        AMD-V
L1d cache:             64K
L1i cache:             64K 
L2 cache:              512K
L3 cache:              5118K
4

3 回答 3

1

事实证明,取消链接错误是我的主目录的NFS文件系统与并行使用 File::Temp 模块之间的冲突:

> “最后,在 NFS 文件系统上,文件句柄的链接计数并不总是在取消链接后立即变为零。目前,此命令在 NFS 磁盘上预计会失败。”

PerlDocs 文件::临时模块

为了解决这个问题,我向系统管理员询问了包含根文件夹的卷上的粘性目录,该目录位于 ext4 文件系统上。然后,我将其添加到 $TMPDIR 下的环境变量中:

export TMPDIR=/to/the/directory

我还将这一行添加到.bash_profile

于 2014-07-08T19:01:41.043 回答
1

您还没有写出您使用的版本,但导致问题的行可能是:

        $disk_full_fh = ::tempfile();

稍后用于查看是否可以将其他数据写入缓冲文件系统。

令人惊讶的是,这会导致任何问题,正如tempfile()GNU Parallel 广泛使用的那样。您可能需要遵循提交错误报告的过程(请参阅 参考资料LESS=+/^REPORTING man parallel)。

我最好的猜测是 $TMPDIR(默认为 /tmp)在您的系统上有些特殊。尝试使用 --tmpdir 并将其设置为另一个目录。

于 2014-06-27T01:10:48.333 回答
0

我现在已经能够重现该错误。它已在最新的 git 版本中修复,并将包含在版本 20140922 中(修复很疯狂,但似乎有效)。

请测试一下。

于 2014-09-07T15:20:15.770 回答