将参数传递给 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=]
.
的占位符
以下命令中 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=]
.