代码之家  ›  专栏  ›  技术社区  ›  lampShadesDrifter

无法为目录中的文件运行远程GNU并行作业(找不到目录)

  •  1
  • lampShadesDrifter  · 技术社区  · 6 年前

    有一个问题,其中无法运行远程GNU并行作业的 parallel

    命令看起来像

    bcpexport() {
        <do some stuff to the given file arg $1 to BCP copy file contents to some MSSQL Server>
    }
    export -f bcpexport
    parallel -q -j 10 --sshloginfile /path/to/list/of/nodes.txt --env $bcpexport \
        bcpexport {} "$TO_SERVER_ODBCDSN" $DB $TABLE $USER $PASSWORD $RECOMMEDED_IMPORT_MODE $DELIMITER \
        ::: "$DATAFILES/$TARGET_GLOB"
    

    在单个节点上运行时,一切正常;这个 "$DATAFILES/$TARGET_GLOB" glob模式的形式 /path/to/a/set/of/files/*.tsv (它作为到共享文件系统的NFS链接存在(我可以确认可以从所有其他节点访问它))。但是,在使用 --sshloginfile 选项在其他节点上远程执行,请参见错误

    /bin/bash:line 27:/path/to/a/set/of/files/*.tsv:没有这样的文件或目录

    如果有人知道这里发生了什么,建议和建议将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  1
  •   lampShadesDrifter    6 年前

    发现问题是使用 -q 选项(在命令中用于引入 "$TO_SERVER_ODBCDSN" 将arg转换为并行作业,而不拆分包含空格的字符串变量)。取消引用 "$DATAFILES/$TARGET_GLOB" $DATAFILES/$TARGET_GLOB 解决了问题。