运行 wine 与 gnu-parallel 并行 - 需要 {%} 插槽替换才能工作

Run wine in parallel with gnu-parallel - needs {%} slot substitution to work

我在 ubuntu 中使用 gnu-parallel 并行 运行ning wine/dos 命令。我可以并且已经通过简单的命令成功地完成了这项工作。

然而,一些更复杂的问题可能会导致 wine 中组件之间的干扰。

因此,为了解决这个问题,我想使用 中查询的 {%} 将一次作业限制为特定命名的 "wine prefix" 实例。问题是:{%} 替换似乎不起作用。

我最终希望能够运行像下面这样的东西

parallel -j4 'WINEPREFIX=$HOME/slot{%} wine cmd /c @echo {%} 2>/dev/null' ::: A B C D

不幸的是,创建并使用了一个新的 wine 前缀插槽 {%},而不是现有的 slot1、slot2、slot3 和 slot4 前缀目录。

按照我试过的手册:

 parallel -j 2 echo {%} ::: A B C

但不是返回类似的东西:

1
2
1

它returns:

{%} A
{%} B
{%} C

所以我不认为问题出在葡萄酒上,而是其他方面:是否需要以某种方式启用 {%} 替换?也许它在我的版本中不可用?也许我错误地复制了示例用法?我在任何地方都找不到这个问题的其他例子,但它每次都发生在我身上。

作为一个较弱的解决方法,我一直在将 bash 模运算符应用于 {#} 作业替换,但这并不完美,因为我仍然偶尔会遇到槽-槽冲突和随后的崩溃。

仅供参考 1:lsb_release -areturns

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty

parallel --version returns

GNU parallel 20130922

您的 parallel 版本似乎太旧了。

您是否在您的版本附带的文档或在线文档中看到 {%}

GNU Parallel 20140522 的发行说明表明:

  • {%} introduced as job slot replacement string. It has known bugs.

GNU Parallel 20140622 的发行说明表明:

  • {%} works as job slot.