LINUX.ORG.RU

Bash многопоточность

 ,


0

2

Приветствую! Собираюсь протестировать кластерную ФС, хочу с нескольких нод писать инфу в один и тот же файл..

Не запускать же 50 таких скриптов одновременно?

#! /bin/bash

for i in $(seq 0 999999);
do      `echo stream-2 >> /opt/test.txt`;
         echo "$i";
         sleep 1;
done

Скажите как реализовать многопоточность, дабы с одной машины одновременно писали бы 50 потоков в этот файл..


file=/opt/test; seq 1 50 | xargs -I {} -P50 -n1 while :; echo ololostring{} >> $file; done

только так ФС не тестируют, этим разве что скорость баша измеришь

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 2)

Есть такая штука, как prll. Попробуй.

post-factum ★★★★★
()

Какие ты ужасы пишешь.

#! /bin/bash

for ((i=0;i<99999;i++));
do
  #echo blahblah >> /opt/test.txt &
  dd if=/dev/urandom count=10 >> /opt/test.txt &
done

Вариант с эхо я закомментил, потому что он ничего не даст, ибо отработает почти мгновенно и новые «эхи» просто не успеют стартовать. dd пишет (по умолчанию) блоками по 512 байт, значит в /opt/test.txt в итоге будет 5120*99999 байт мусора.

legolegs ★★★★★
()

Собираюсь протестировать кластерную ФС

А не проще bonnie++ или другой бенчмарк c нескольких нод через pssh одновременно запустить?

Pinkbyte ★★★★★
()
    pwait() {
        while [ $(jobs | grep -c Run) -ge $1 ]
            do
                sleep 1
            done
        }

while :
do 
{ blah ;} & pwait 50
done

YAR ★★★★★
()
function test() {
    for i in $(seq 0 999999); do 
        `echo stream-2 >> /opt/test.txt`;
        echo "$i";
        sleep 1;
    done
}

for i in {1..${thread_count}} ; do
    test &
done
KennyMinigun ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.