如何限制并行作业

罪15

我有一个包含文件的主机说/tmp/hostlist需要用户名和密码才能登录,我正在使用 expect 命令登录主机并执行命令,然后在我的 bash 脚本中出现如下所示。

)

VAR=$(expect -c "$script")

echo "$VAR" >/tmp/outexp
-----------------

我能够处理并行执行 -

while IFS= read -r i
do
        ( export server_name=`echo $i`;echo "connecting to $i";expect -c 
wait

有没有办法限制没有。一次的主机?例如,假设我在一个文件中有 1000 个主机..并且我想一次在一组 100 个主机中执行以完成 1000 个主机..

奥莱·丹格

使用 GNU Parallel,您可以执行以下操作:

[compute $script]
export script
run_one() {
  i="$1"
  export server_name=`echo $i`
  echo "connecting to $i"
  expect -c "$script"
  echo "Job completed on $i"
  echo "-----------------------------------"
}
export -f run_one

cat "$file" | parallel -j100 run_one '2>&1' >"$log2"

或者:

[compute $script]
export script

cat "$file" |
  parallel -j100 --tag 'i={} expect -c "$script" 2>&1' >"$log2"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章