如何运行此命令的多个实例dd

问题描述 投票:0回答:4

我想多次运行此命令,但我不知道该怎么做。它必须是一个单一的命令。这个命令的作用是将我的cpu核心推送到%100

dd if=/dev/zero of=/dev/null

它用于任务。如果你能感谢,请帮忙

这就是作业中的内容。也许找出来可能会有所帮助

“弄清楚如何同时运行命令dd的多个实例,如果= / dev / zero = / dev / null。你也可以使用命令sum / dev / zero。你应该为每个CPU核心运行一个实例,以便在虚拟机中的所有CPU核心上将CPU利用率提高到100%。您应该能够通过以常规用户身份运行单个命令或管道来启动所有实例“

到目前为止,我尝试过

dd if=/dev/zero of=/dev/null | xargs -p2

但那不能胜任工作

linux unix command
4个回答
0
投票

许多方式......例如重复命令四次:

命令&;命令&;命令&;命令&

..或者更系统地:

for i in {1..4}
do
   dd if=/dev/zero of=/dev/null &
done

0
投票

你的作业可能已经到期了。但对于未来的读者来说,这是一个单线解决方案。

perl -e 'print "/dev/zero\n" x'$(nproc --all) | xargs -n 1 -P $(nproc --all) -I{} dd if={} of=/dev/null

这是如何运作的?让我们剖析管道。

nproc --all将返回系统中的核心数。让我们假装你的系统有4个核心。

perl -e 'print "/dev/zero\n" x 4'将打印4行/dev/zero

产量

/dev/zero
/dev/zero
/dev/zero
/dev/zero

然后perl的输出传递给xargs

-n 1告诉xargs一次只使用一个参数。

-I {}告诉xargs该论点将取代{}的出现

-P 4告诉xargs并行运行多达4个命令实例

上面命令的较短版本可以这样写:

perl -e 'print "if=/dev/zero of=/dev/null\n" x '$(nproc --all) | xargs -n2 -P0 dd

0
投票

这将运行4个副本:

dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null

但实际上不建议将其作为家庭作业的解决方案,因为它看起来好像你不明白什么确实。这里没有通过管道发送任何东西。它的优点是可以使用Ctrl-C轻松停止。

如果目标仅仅是增加碳排放,那么这就更短了:

 burnP6 | burnP6 | burnP6 | burnP6

如果你有GNU Parallel:

yes /dev/zero | parallel dd if={} of=/dev/null
yes | parallel burnP6

GNU Parallel默认启动每个CPU核心1个作业,因此它只从yes读取那么多参数。


0
投票

或者你可以尝试我自制的并行数据传输工具pdd。该工具生成多个线程,每个线程都与CPU核心绑定。

© www.soinside.com 2019 - 2024. All rights reserved.