将参数传递给 xargs 中的并行处理

Passing arguments to parallel processing in xargs

以下命令中 xargs_tasks 的用途是什么?:

cat source.ndjson | tr '\n' '[=10=]' | xargs -0 -n 1 -P 8 sh -c './theprocess.py ' xargs_tasks >> errors.log 2>&1

也就是说,在阅读 -c 选项到 sh 的手册页详细信息后,您实际上可以通过 运行:

获得相同的结果
cat source.ndjson | tr '\n' '[=11=]' | xargs -0 -n 1 -P 8 sh -c './theprocess.py [=11=]' >> errors.log 2>&1

也就是说,对于 -c,引号中字符串后面的任何参数都将分配给变量 [=16=]</code>,等等。第一个命令中的 <code>xargs_tasks 设置为 [=16=],并且一次一个地传送到 xargs 的参数设置为 </code>。因此,我的第二个命令的工作原理完全相同,因为我直接在字符串中包含 <code>[=16=] 而不是 </code>.</p> <p>我的猜测是 <code>xargs_tasks 为您提供了一个短字符串,可以在 htop 之类的内容中进行过滤,但这有点牵强。

当对sh使用-c选项时,命令后的下一个参数在命令中取为[=12=],其后的参数变为</code>, <code>, 等等

[=12=] 应该包含 shell 脚本的名称,而参数从 </code> 开始。所以 <code>xargs_task 是否只是为了防止第一个参数被放入 [=12=].

的占位符