Ubuntu GNU并行解链错误

Ubuntu GNU并行解链错误,ubuntu,unlink,gnu-parallel,virtual-server,Ubuntu,Unlink,Gnu Parallel,Virtual Server,是否在虚拟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/pa

是否在虚拟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

您尚未编写所使用的版本,但导致问题的行可能是:

        $disk_full_fh = ::tempfile();
它稍后用于查看是否可以将其他数据写入缓冲文件系统

这会导致任何问题,这是非常令人惊讶的,因为GNU Parallel广泛使用
tempfile()
。您可能希望遵循提交错误报告的过程(请参阅
LESS=+/^REPORTING man parallel


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

结果表明,取消链接错误是my home directory的NFS文件系统与parallel使用File::Temp模块之间的冲突:

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

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

export TMPDIR=/to/the/directory

我还将这一行添加到
.bash_profile

我现在能够重现错误。它在最新的git版本中得到了修复,并将包含在20140922版本中(修复程序很疯狂,但似乎可以工作)


请测试一下。

谢谢您的回复。我使用的是最新版本20140622。在我的主文件夹中,[代码>和<代码>和<代码>平行——tmpdir/home/##;#;ţ;ţ;ţ;ţ;ţ;ţ;ţ;;ţ;ţ;;