【问题标题】:how to pass arguments into xargs EOF如何将参数传递到 xargs EOF
【发布时间】:2020-07-03 14:26:34
【问题描述】:

我尝试使用以下命令并行发送 4 个 spark 作业,并等待所有这些作业完成后再开始新的步骤。但是我注意到$cmd_trainSparkModelx 命令在'xargs' 中是空的。如何将它们传递给xargs

eval $cmd_prepare_step

xargs -P 4 -I {} sh -c 'eval "$1"' - {} <<'EOF'
#eval "$cmd_trainSparkModel1"
#eval "$cmd_trainSparkModel2"
#eval "$cmd_trainSparkModel3"
#eval "$cmd_trainSparkModel4"
echo "$cmd_trainSparkModel1"
echo "$cmd_trainSparkModel2"
echo "$cmd_trainSparkModel3"
echo "$cmd_trainSparkModel4"
EOF

echo "finished training"
eval $cmd_postTraining_step

【问题讨论】:

  • 如果您想要评估此处的文本,请不要在此处文档的开头引用EOF
  • @EricBackus 有效。谢谢!

标签: bash xargs


【解决方案1】:

以下命令有效。但还是想看看如何让 xargs 工作,因为它还可以控制同时运行多少个作业。

echo "$cmd_trainSparkModel1" &
p1=&!
echo "$cmd_trainSparkModel2" &
p2=&!
echo "$cmd_trainSparkModel3" &
p3=&!
echo "$cmd_trainSparkModel4" &
p4=&!
wait $p1 $p2 $p3 $p4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2019-10-05
    相关资源
    最近更新 更多