2017-01-26 4 views
0

Я хочу запустить эту команду несколько раз, но я не уверен, как это сделать. Это должна быть единственная команда. то, что эта команда делает это толкает мой процессор сердечники % 100Как запустить несколько экземпляров этой команды dd

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

Its для присваивания. пожалуйста, помогите, если вы можете спасибо

Это то, что говорится в задании. Может быть, это может быть полезно, чтобы понять это

«Выяснить, как запускать несколько экземпляров команды дд если =/DEV/нуль =/DEV/нуль в то же время. Вы можете также использовать команда sum/dev/zero. Вы должны запустить один экземпляр на ядро ​​процессора, так как , чтобы повысить загрузку процессора до 100% на всех ядрах процессора в вашей виртуальной машине . Вы должны иметь возможность запускать все экземпляры на работает одну команду или трубопровод в качестве обычного пользователя "

до сих пор я пытался делать

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

но это не делает работу правильно

+0

Есть другие способы подтолкнуть ваши сердечники до 100%, но если вы хотите это сделать, просто вызовите 'dd' с' & 'в конце' dd if =/dev/zero of =/dev/null & 'и повторите, сколько раз вы хотите. –

+0

Я не могу этого сделать. он сказал, что я могу только запустить все экземпляры, запустив одну команду или конвейер в качестве обычного пользователя. –

+1

Если у вас есть «GNU Parallel», вы можете запустить с ним несколько экземпляров вашей команды. – alvits

ответ

0

много способов .. например повторяя команду четыре раза:

команду &; команда &; команда &; Команда &

..or более систематическим образом:

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

не могу использовать скрипт –

+0

может использовать только одну команду –

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

Спасибо. Его не должно до следующей недели –

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 запускается по умолчанию 1 задания на ядро ​​процессора, и поэтому он только читает, что многие аргументы от yes.

Смежные вопросы