标签: gnu-parallel

使用--onall时,GNU并行不会在远程服务器上并行运行

我正在尝试在具有多个参数的多个远程服务器上运行脚本。GNU并行命令是:

parallel --onall -S ${RH32},{RH64} /shared/loc/script.sh ::: param1 param2
Run Code Online (Sandbox Code Playgroud)

script.sh:

host=`uname -n`
param=$1
logfile=/shared/loc/log-$host-$param
for i in `seq 1 5`; do
    touch ${logfile}_$i
    sleep 2
done
Run Code Online (Sandbox Code Playgroud)

我正在尝试并行运行4个进程:

  • rh32使用param1运行script.sh
  • rh32使用param2运行script.sh
  • rh64使用param1运行script.sh
  • rh64使用param2运行script.sh

当查看累积的输出时,看起来实际上是这样的:

  • rh32使用param1运行script.sh
  • rh64使用param1运行script.sh

-正在并行运行。完成后,其他两个将并行运行。

如何使所有四个同时并行运行?

谢谢,

parallel-processing gnu-parallel

4
推荐指数
1
解决办法
415
查看次数

如何在多台计算机上使用GNU并行

我想在我的两台计算机上使用GNU parallel.我成功地在一台计算机上运行并行,但我无法在远程计算机上并行运行.

版本:本地:parallel-20140222,Remote:parallel-20130522.我已经启用了密码少ssh登录.

parallel -j+0 --eta 'muscle -in {} -out {.}.aln -quiet' < list

但当我尝试使用以下命令"并行"在远程计算机上运行时,

1)时间并行-j + 0 --eta -Svaramesh@10.117.173.5,: - 转移, - 返回{.}.aln --cleanup'muscle -in {} -out {.}.aln -quiet'<名单

2)时间并行-j + 0 - eta -S10.117.173.5,: - 转移, - 返回{.}.aln --cleanup'muscle -in {} -out {.}.aln -quiet'<名单

3)时间并行-j + 0 - eta -S:,10.117.10.5 -transfer, - return {.}.aln --cleanup'muscle -in {} -out {.}.aln -quiet'<list

所有这些都给出了以下错误

parallel: Error: Cannot open input file `nsfer,': No such file or directory.
Run Code Online (Sandbox Code Playgroud)

parallel-processing gnu-parallel

4
推荐指数
1
解决办法
1372
查看次数

BASH ...... GNU并行

绞尽脑汁并抓取谷歌找到一种方法来获取sem带超时的命令选项,以便在超时时给我一个退出代码.它不需要通过sem,这只是一种痛苦,因为我需要根据是否最终采用不同的行动:

  • 我从被调用的脚本得到了一个OK响应

  • 从调用的脚本中我得到的东西都没问题

  • 通话超时

在这种情况下,信号量用于限制对脚本的调用,我将文件列表传递给传出消息队列.正如您在下面的粗略测试示例中所看到的,我能够处理前两个场景,但我不能为我的生活得到任何输出,我可以使用从超时终止的进程(即outputtest.shsleep 6; echo testings))

sem --jobs 3 --timeout 3 -u \
'runproc=$(bash outputtest.sh q_xxxx); if [ "$runproc" == "00" ]; 
then echo "OK"; else mv ./q_xxxx ./err/err_xxxx; fi'
Run Code Online (Sandbox Code Playgroud)

任何提示?

linux bash shell semaphore gnu-parallel

4
推荐指数
1
解决办法
1172
查看次数

如何在我的下面的shell脚本中使用rsync而不是scp来复制文件?

我正在使用scp并行使用GNU并行复制文件与我的下面的shell脚本,它工作正常.

我不知道如何在我的下面的shell脚本rsync中代替scp.我试图看看rsyncscp传输速度相比是否会有更好的性能.

以下是我的问题描述 -

我从复制文件machineBmachineCmachineA,因为我跑我的下面shell脚本上machineA.

如果文件不在那里machineB它应该在那里machineC肯定,所以我会尝试从machineB第一次复制文件,如果它不存在machineB那么我将尝试从中复制相同的文件machineC.

我使用GNU Parallel库并行复制文件,它工作正常.目前我正在为PRIMARY和SECONDARY并行复制五个文件.

下面是我的shell脚本 - 我有 -

#!/bin/bash

export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary
readonly FILERS_LOCATION=(machineB machineC)
export FILERS_LOCATION_1=${FILERS_LOCATION[0]}
export FILERS_LOCATION_2=${FILERS_LOCATION[1]}
PRIMARY_PARTITION=(550 274 2 546 278) # this will have more file numbers
SECONDARY_PARTITION=(1643 1103 1372 1096 1369 1568) # this will have more file numbers

export dir3=/testing/snapshot/20140103

do_Copy() {
  el=$1 …
Run Code Online (Sandbox Code Playgroud)

linux bash rsync scp gnu-parallel

4
推荐指数
1
解决办法
2578
查看次数

GNU Parallel:如何确定您正在使用的作业“插槽”?

我试图找到一种方法来确定命令当前正在使用的作业“插槽”或​​“核心” parallel。例如,我们都看到过类似的parallel命令分配方式图像:

在此处输入图片说明

如果我想知道某个过程在哪一列中,我怎么知道?

我的具体问题得到了说明:如果设置-j 4为一次只允许运行4个作业,我想动态地知道一个命令占用的插槽是1 2 3还是4。问题是我有一些不能并行运行的命令,但是如果我知道我正在运行哪个插槽,我很好。

再举个例子,说我有要并行化的这些命令:

command resource1 file1.rb
command resource2 file2.rb
command resource3 file3.rb
command resource4 file4.rb
command resource1 file5.rb
command resource2 file6.rb
command resource3 file7.rb
command resource4 file8.rb
Run Code Online (Sandbox Code Playgroud)

一次只能使用一个命令来使用每个资源。假设我parallel像往常一样一次将这些命令放入4个作业中,并且作业3完成并转到队列中的下一个,我现在并行运行这些命令:

command resource1 file1.rb
command resource2 file2.rb
command resource3 file3.rb
command resource1 file5.rb
Run Code Online (Sandbox Code Playgroud)

注意resource1正在被两个命令使用,不好。我需要一个环境变量或告诉下一个命令使用资源号4的东西,以便并行化的命令如下所示:

command resource1 file1.rb
command resource2 file2.rb
command resource3 file3.rb
command resource4 file5.rb
Run Code Online (Sandbox Code Playgroud)

我曾考虑过使用文件系统或其他一些正在使用资源的外部标志,但我认为使用并行进程时,可能会出现竞争条件。

我到处都看过,非常感谢您的帮助!

parallel-processing gnu-parallel

4
推荐指数
1
解决办法
463
查看次数

bash循环并行

我试图并行运行这个脚本,因为每组i <= 4.在runspr.py本身平行,和多数民众赞成罚款.我想要做的是在任何实例中只运行4 i循环.

在我现在的代码中,它将运行一切.

#!bin/bash
for i in *
do 
  if [[ -d $i ]]; then
    echo "$i id dir"
    cd $i
      python3 ~/bin/runspr.py SCF &
  cd ..
  else
    echo "$i nont dir"
  fi
done
Run Code Online (Sandbox Code Playgroud)

我关注了https://www.biostars.org/p/63816/https://unix.stackexchange.com/questions/35416/four-tasks-in-parallel-how-do-i-do-that 但是无法并行地实现代码.

bash gnu-parallel

4
推荐指数
1
解决办法
2312
查看次数

并行运行可指定数量的命令 - 对比xargs -P,GNU parallel和"moreutils"parallel

我试图在bash脚本中在26台服务器上运行多个mongodump.

我可以运行3个命令

mongodump -h staging .... & mongodump -h production .... & mongodump -h web ... &

同时,当一个人完成时,我想开始另一个mongodump.

我无法同时运行所有26个mongodumps命令,服务器将在CPU上运行.最多3个mongodumps同时.

parallel-processing bash xargs gnu-parallel

4
推荐指数
2
解决办法
651
查看次数

在bash中并行化循环

我的bash脚本中有以下代码段

#!/bin/bash
    for ((i=100; i>=70; i--))
      do
        convert test.png -quality "$i" -sampling-factor 1x1 test_libjpeg_q"$i".jpg
      done
Run Code Online (Sandbox Code Playgroud)

如何使用所有cpu内核并行执行for循环.我已经看到gnu parallel被使用但是在这里我需要输出文件名在特定的命名方案中,如上所示

parallel-processing bash gnu-parallel

4
推荐指数
1
解决办法
240
查看次数

如何使用 git-bash 在 Windows 10 上安装 GNU Parallel

有没有人能够通过 git-bash 在 Windows 10 上成功使用 GNU Parallel? 是否可以?- 如果是这样,如何?


背景: 我在安装和使用 GNU Parallel 时遇到问题,这让我开始思考 -也许 git-bash 阻碍了我?我敢肯定,如果我通过 WSL 安装 Ubuntu,那么运行 GNU Parallel 不会有任何问题。但我想知道我是否可以先在 git-bash 中做到这一点。

unix windows bash git-bash gnu-parallel

4
推荐指数
1
解决办法
4367
查看次数

与预定义的顺序优先级并行运行 bash 作业

我想在具有 >2 个内核的机器的 2 个内核上运行 3 个作业(A、B、C)。我知道:

运行时(A)>运行时(C)

运行时(B)>运行时(C)

预先未知是runtime(A)>runtime(B)还是runtime(A)<runtime(B)。

我想做的是:

  • 在核心 1 上启动 A
  • 在核心 2 上启动 B
  • 任一完成后,在一个空闲核心上启动 C

这是如何实现的(如果可能,在 bash 中)?

bash shell gnu-parallel

4
推荐指数
1
解决办法
59
查看次数