我想多次运行此命令,但我不知道该怎么做。它必须是一个单一的命令。这个命令的作用是将我的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
但那不能胜任工作
许多方式......例如重复命令四次:
命令&;命令&;命令&;命令&
..或者更系统地:
for i in {1..4}
do
dd if=/dev/zero of=/dev/null &
done
你的作业可能已经到期了。但对于未来的读者来说,这是一个单线解决方案。
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
这将运行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
读取那么多参数。
或者你可以尝试我自制的并行数据传输工具pdd。该工具生成多个线程,每个线程都与CPU核心绑定。