safari
написал 12 мая 2008 года в 23:47 (1387 просмотров)
Ведет себя
неопределенно; открыл 3 темы в форуме, оставил 4 комментария на сайте.
Доброго время суток!
Необходимо запустить 25 процессов одновременно (копирование файла), скопированный файл удалять, чтоб очистить место на диске.
Скрипт пишу на bash.
Проблема а том, что при одновременном заупске копирования, одновременного удаления файлов не получается,
так как свободное место на диске заканчивается раньше, чем скопируется хотя бы один файл. И система начинает выкидывать непоместившиеся файлы, работает только с остальными, то есть одновременной работы с 25 процессами не получается.
Надеюсь обьяснила понятно.
Система SLC 4
Подскажите, пожалуйста, что и где можно почитать по этому поводу.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
неа. я не понял :)
Но что-то написано? Код в студию, будем смотреть. Код он понятнее в таких вещах, чем русский язык.
Вариантов кода много, вот один из последних:
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
воть :)
Пути которые я вижу:
1) Сократить размер файла;
2) Копировать файл кусками скажем с помощью dd и контролировать место на диске, по большому счету это п.1;
3) Сократить кол-во процессов, сделай чтобы кол-во процессов задавалось через параметр скрипта. Скорее всего, после определённого количества процессов производительностью упадёт до определённого значения и больше не будет изменяться.
4) Заменить ЖД на более большой:)
Большие сомнения что этот тест может проверить perfomance чего-либо, если ты только контроллеры ЖД не разрабатываешь.
Мне кажется это несущественно, но что за команды такие: copy и rfrm?
Я скрипт чуть переделал под cp и rm: он, как собственно и ожидалось, замечательно запускает 25 процессов cp, которые копируют файл. Да, если кончится место на диске, то cp, один за другим, начнут вылетать с ошибкой. Но, как я понимаю условие — так и надо: сначала скопировать файлик на диск, а затем удалить его. То есть, так и должно быть и никуда от этого не деться.
Если тебе кажется, что оно должно работать иначе, то ты скажи как. Чтобы cp, не имея возможности записать останавливался и ждал когда место освободиться? Во-первых, cp так не умеет, а во-вторых, это шанс словить race condition: если ни один из 25 процессов не успеет скопировать файл полностью, к тому моменту как они суммарными усилиями забъют весь жёсткий диск своими файлами, то они все хором остановятся и будут ждать у моря погоды. Или чего-то иного хотелось?