标签: gnu-parallel

在 Ubuntu 上使用并行

我在尝试在 Ubuntu 10.04 上使用并行命令时遇到问题。我查看了并行文档,似乎运行的命令很少。在所有情况下,我只是在不采取任何操作的情况下返回命令提示符。例如,我试图使用 bzip2 压缩一堆文件


17:32 farhat HarshaNaveen$ parallel bzip2 ::: *fastq 
17:33 farhat HarshaNaveen$ ls *fastq|parallel bzip2 {}

这些命令都不起作用。也没有任何错误。man 文件中给出的示例虽然运行良好。


18:58farhat HarshaNaveen$ parallel sh -c "echo hi; sleep 2; echo bye" -- 1 2 3
hi
hi
hi
bye
bye
bye
18:58farhat HarshaNaveen$ 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

gnu-parallel

6
推荐指数
1
解决办法
3813
查看次数

GNU Parallel 可以执行更多的并行进程吗?

例如,我可以执行:

parallel -j 200 < list0
Run Code Online (Sandbox Code Playgroud)

其中“列表”有:

nice -n -20 parallel -j 100 < list2
nice -n -20 parallel -j 100 < list1
Run Code Online (Sandbox Code Playgroud)

这是否可行/可能?

linux gnu-parallel

6
推荐指数
2
解决办法
9034
查看次数

将 A 的标准输出并行传输到 B 是否安全

我在跑A file | B --params > file.txt。由于我想加快处理速度,所以我使用了parallel -j+0< a.txt并发运行 20 个作业。a.txt 包含所有命令:

A file1 | B --params > file1.txt 

A file2 | B --params > file2.txt

A fileN | B --params > fileN.txt
Run Code Online (Sandbox Code Playgroud)

这种方式安全吗?并行运行时,来自不同程序的标准输出会被弄乱吗?

pipe output parallelism gnu-parallel

6
推荐指数
1
解决办法
452
查看次数

如何并行运行脚本的 x 个实例?

我有一个脚本,我总是希望并行运行“x”个实例。

代码看起来像这样:

for A in 
do
  for B in
  do
    (script1.sh $A $B;script2.sh $A $B) &
  done #B
done #A
Run Code Online (Sandbox Code Playgroud)

脚本本身运行数据库查询,因此它将受益于并行运行。问题是

1)“等待”不起作用(因为它完成了所有后台作业并开始了新作业(即使我包含一个线程计数器),这浪费了大量时间。

2)我不知道如何并行做到这一点。我只找到了多次运行相同脚本但没有使用不同参数的示例。

3)替代解决方案是:

for A in 
do
  for B in
  do
    while threadcount>X 
    do
      sleep 60
    done
    (script1.sh $A $B;script2.sh $A $B) &
  done #B
done #A
Run Code Online (Sandbox Code Playgroud)

但我并没有真正弄清楚如何使线程数可靠。

非常欢迎一些指向正确方向的提示。


我很想使用并行,但事情就像文档告诉我的那样不起作用。

我愿意

parallel echo ::: A B C ::: D E F
Run Code Online (Sandbox Code Playgroud)

(来自文档)它告诉我

parallel: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit. …
Run Code Online (Sandbox Code Playgroud)

bash parallelism gnu-parallel

6
推荐指数
1
解决办法
4828
查看次数

“parallel --jobs 10”是否意味着将运行 10 个作业?

将选项指定--jobs给 GNU 时parallel,它究竟是什么意思?

我执行:

parallel --jobs 10 ./program ::: {1..100}
Run Code Online (Sandbox Code Playgroud)

哪里program是一个密集的任务,而且这些工作是完全相互独立的。{1..100}代表每个任务的符号输入。当我检查 PC 上运行的进程时,我发现很多时候同时运行的作业少于10 个。

那么具体是指什么--jobs呢?

gnu-parallel

6
推荐指数
1
解决办法
5038
查看次数

如何告诉 GNU Parallel 不要引用替换字符串

默认情况下,GNU Parallel 会引用替换字符串,这样它们就不会被 shell 扩展。但在某些情况下,您确实希望 shell 解释替换字符串。

例如

$ cat variables.txt
--var1 0.1 --var2 0.2
--var1 0.11 --var3 0.03
Run Code Online (Sandbox Code Playgroud)

这里我希望 GNU Parallel 运行:

myprogram --var1 0.1 --var2 0.2
myprogram --var1 0.11 --var3 0.03
Run Code Online (Sandbox Code Playgroud)

这是怎么做到的?

如果只解释一些替换字符串,这是如何完成的:

例如

$ ls
My file1.txt
My file2.txt
Run Code Online (Sandbox Code Playgroud)

我想要这样运行:

myprogram --var1 0.1 --var2 0.2 'My file1.txt'
myprogram --var1 0.11 --var3 0.03 'My file1.txt'
myprogram --var1 0.1 --var2 0.2 'My file2.txt'
myprogram --var1 0.11 --var3 0.03 'My file2.txt'
Run Code Online (Sandbox Code Playgroud)

quoting gnu-parallel

6
推荐指数
1
解决办法
1406
查看次数

xargs、记录和标准输入

我有一个 0 字节分隔的记录文件。

Record 1, Line 1
Record 1, Line 2
[zero byte]
Record 2, Line 1
Record 2, Line 2
Run Code Online (Sandbox Code Playgroud)

我想为每个记录运行一次“process.sh”命令,并将记录作为标准输入:

bash process-one-record-stdin.sh <record-contents
Run Code Online (Sandbox Code Playgroud)

我可以使用 xargs、parallel 或其他工具来完成此操作吗?(我知道如何使用 bash 脚本,但我更喜欢尽可能使用内置工具)

动机:

magic-xargs-type-command-here -0 all-records.txt -- xargs -d"\n" -- bash process-one-record-arguments.sh
Run Code Online (Sandbox Code Playgroud)

xargs gnu-parallel

5
推荐指数
1
解决办法
568
查看次数

使用 Slurm 调度程序在 2 个或更多节点上运行 GNU Parallel

我正在尝试在使用 Slurm 工作负载管理器的 HPC 上使用 GNU Parallel 分发独立运行的进程。简而言之,这是数据分析的设置:

脚本#1:myCommands

./myscript --input infile.txt --setting 1 --output out1
./myscript --input infile.txt --setting 2 --output out2
./myscript --input infile.txt --setting 3 --output out3
./myscript --input infile.txt --setting 4 --output out4
Run Code Online (Sandbox Code Playgroud)

脚本#2:run.sh

#SBATCH --time=00:02:00
#SBATCH --nodes=2
#SBATCH --cpus-per-task=2

cat myCommands | parallel -j 4
Run Code Online (Sandbox Code Playgroud)

这是可行的,但它只使用一个节点。该节点上的两个核心被分为 4 个线程,以便根据并行请求为 4 个作业腾出空间。这是不可取的。

我的搜索表明我需要 anodefile和 asshloginfile来完成此操作,但我在网上没有看到与 一起使用的示例Slurm,仅与PBSsystem.

如何使脚本 (1) 使用两个节点,并且 (2) 不将核心拆分为线程?

gnu-parallel slurm

5
推荐指数
1
解决办法
1675
查看次数

同时从本地文件夹并行复制到远程服务器

我有多个文件夹,每个文件夹大约有1500个文件。我有一种 for 循环遍历每个文件夹,然后根据环境将文件发送到一个或 4 个远程主机。目前我正在使用rdist. 我拥有的几乎每个文件每天都会发生变化,有时它只是更改文件内的日期和时间。

我遇到过一些命令,比如pscp,prsync以及 GNU parallel。我在多个主机上进行了实验pscprdist两者都给出了相似的结果。

  1. rdistprsync在性能方面有什么区别?我的理解是prsync可以在多个主机上迁移文件,并且rdist. 我从测试中得到的理解是,既不能prsyncrdist单个主机上并行复制多个文件;也不能在单个主机上并行复制多个文件。它们只能在多个主机上并行复制文件。那么从性能方面来看两者有什么区别吗?

    对于rdist,我的脚本创建一个类似的 distfile

    HOSTS( user@server user@server2 user@server3 )
    RUN:(/var/inputpath/folder)
    -> ${HOSTS}
    install (/var/outputpath/folder)
    
    Run Code Online (Sandbox Code Playgroud)

    然后我rdist像下面一样运行

    rdist-f /dist-file-path -P /path/to/ssh
    
    Run Code Online (Sandbox Code Playgroud)
  2. parallel使用 GNU 测试了本地副本cp并使用zip. 确实非常快。这允许甚至在本地计算机上并行复制多个文件。

所以我的问题是,是否有可能将 GNU 并行与 say pscpor rdistor结合起来prsync

rsync gnu-parallel pscp

5
推荐指数
1
解决办法
2750
查看次数

使用与 sg_format 300 多个并行驱动器

前段时间我了解了软件并行:https://forums.servethehome.com/index.php? threads/mdadm-create-raid-0-quick-format.41161/#post-389210

现在我的目标与以前几乎相同,但我想尝试以不同的方式去做。

对于设置我有:

配备单端口 SAS2 HBA 的戴尔 SFF 台式机

总共 14 个 NetApp SAS3 磁盘架

每个磁盘架安装了 24 个 960GB 12G SAS SSD

驱动器运行 520 扇区大小

目标是在所有驱动器上运行 sg_format --format -e /dev/sgXX,最好使用并行。

它可以一项一项地完成,但我想使用并行来完成它,以了解它的功能,并可能为所有类似的未来项目更快地完成这项工作。

我使用 Ubuntu 23.10,添加了 Universe 存储库,并行使用了 apt update 和 apt install。Parallel 以及 sg3-utils 和 smartmontools 现已安装。

我的 HBA 可以处理 128 个设备,其中设备 1(或 0)是 HBA 本身,因此我总共有 5 个磁盘架在链中运行,这意味着我连接了 120 个驱动器。它们从 /dev/sg2 开始,到 /dev/sg126 结束。

我使用的命令是:parallel sg_format --format -e ::: /dev/sg[2-126]

运行它时,终端会冻结几秒钟,我想这是可以预料的。

然而,实际上只有 /dev/sg2 和 /dev/sg6 正在运行,请参见下图。 仅 sg2 和 sg6 运行格式的图像

所有驱动器都完全相同,但只有其中 2 个想要实际启动格式化。我没有收到任何错误或任何无法启动的原因。 …

linux ubuntu gnu-parallel

5
推荐指数
1
解决办法
536
查看次数

标签 统计

gnu-parallel ×10

linux ×2

parallelism ×2

bash ×1

output ×1

pipe ×1

pscp ×1

quoting ×1

rsync ×1

slurm ×1

ubuntu ×1

xargs ×1