nixp.ru v3.0

14 ноября 2024,
четверг,
22:27:15 MSK

safari написал 12 мая 2008 года в 23:47 (1387 просмотров) Ведет себя неопределенно; открыл 3 темы в форуме, оставил 4 комментария на сайте.

Доброго время суток!

Необходимо запустить 25 процессов одновременно (копирование файла), скопированный файл удалять, чтоб очистить место на диске.

Скрипт пишу на bash.

Проблема а том, что при одновременном заупске копирования, одновременного удаления файлов не получается,

так как свободное место на диске заканчивается раньше, чем скопируется хотя бы один файл. И система начинает выкидывать непоместившиеся файлы, работает только с остальными, то есть одновременной работы с 25 процессами не получается.

Надеюсь обьяснила понятно.

Система SLC 4

Подскажите, пожалуйста, что и где можно почитать по этому поводу.

rgo
safari
Доброго время суток!

Надеюсь обьяснила понятно.

неа. я не понял :)

Но что-то написано? Код в студию, будем смотреть. Код он понятнее в таких вещах, чем русский язык.

safari

Вариантов кода много, вот один из последних:

while [ $i -lt 25 ]

do

(cop=`copy file:///path1 gsiftp://$1/path2/$i`; id=$?

if [ $id != 0 ]; then

echo i $i = id $id copy failed;

rem=`rm /path2/$i`

else echo i $i = id $id copy success;

rem=`rfrm /path2/$i`

fi) &

pid[$i]=$!

echo ${pid[$i]}

i=$(( $i + 1 ))

done

воть :)

metal

Пути которые я вижу:

1) Сократить размер файла;

2) Копировать файл кусками скажем с помощью dd и контролировать место на диске, по большому счету это п.1;

3) Сократить кол-во процессов, сделай чтобы кол-во процессов задавалось через параметр скрипта. Скорее всего, после определённого количества процессов производительностью упадёт до определённого значения и больше не будет изменяться.

4) Заменить ЖД на более большой:)

Большие сомнения что этот тест может проверить perfomance чего-либо, если ты только контроллеры ЖД не разрабатываешь.

rgo

Мне кажется это несущественно, но что за команды такие: copy и rfrm?

Я скрипт чуть переделал под cp и rm: он, как собственно и ожидалось, замечательно запускает 25 процессов cp, которые копируют файл. Да, если кончится место на диске, то cp, один за другим, начнут вылетать с ошибкой. Но, как я понимаю условие — так и надо: сначала скопировать файлик на диск, а затем удалить его. То есть, так и должно быть и никуда от этого не деться.

Если тебе кажется, что оно должно работать иначе, то ты скажи как. Чтобы cp, не имея возможности записать останавливался и ждал когда место освободиться? Во-первых, cp так не умеет, а во-вторых, это шанс словить race condition: если ни один из 25 процессов не успеет скопировать файл полностью, к тому моменту как они суммарными усилиями забъют весь жёсткий диск своими файлами, то они все хором остановятся и будут ждать у моря погоды. Или чего-то иного хотелось?

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.