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

时间:2017-03-23 22:45:54

标签: bash parallel-processing xargs

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

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

即,在阅读-c sh选项的手册页详细信息后,您可以通过运行实际获得相同的结果:

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

也就是说,对于-c,引号中字符串后面的任何参数都会分配给变量$0$1,依此类推。第一个命令中的xargs_tasks设置为$0,并且一次一个地传递给xargs的参数设置为$1。因此,我的第二个命令完全相同,因为我在字符串中直接使用$0而不是$1

我的猜测是,xargs_tasks为您提供了一个短字符串,可以在htop之类的内容中进行过滤,但这只是一段时间。

1 个答案:

答案 0 :(得分:1)

-c使用sh选项时,命令后的下一个参数将被视为$0,并且后面的参数变为$1$2等等。

$0应该包含shell脚本的名称,而参数从$1开始。所以xargs_task就是一个占位符,以防止第一个参数被放入$0