Перечислите владение файлового пространства пользователем

for i in {1..100000}

Существует только 65 536 портов. Отрегулируйте это.

for n in {1..100000..1000}; do   # start 100 fetch loops
        for i in `eval echo {$n..$((n+999))}`; do
                echo "club $i..."
                curl -s "http://some_url_here/"$i  > $i.txt
        done &
        wait
done

(редактирование: echocurl
(редактирование: разделите сильно датированное утверждение о пределах ОС и добавьте пропавших без вести wait)

3
17.09.2014, 23:59
1 ответ

Если нет какого-либо специфического для NetApp способа сделать это, квота обычно представляет собой всего несколько чисел: использованное количество, разрешенное количество. Его отслеживают тривиальным образом: если пользователь удаляет файл размером 1 МБ, вычтите 1 МБ из использованного объема. Если пользователь добавляет 1 МБ к файлу, добавьте 1 МБ к используемому объему. Сама квота не знает (и не заботится), какие файлы используют это пространство.

Однако та команда поиска, которую вы используете, не оптимальна. Во-первых, чтобы найти владельца, find должен запустить stat для файла. Итак, find уже имеет размер. Далее, exec ls {} \; довольно неэффективен. По крайней мере, вы должны использовать -exec ls {} + , чтобы уменьшить количество вызовов ls . Но даже лучше (если он есть в вашей находке, не уверен, что он стандарт) - -printf . Это полностью избегает ls и позволяет вам использовать stat find, который уже был выполнен:

find … -printf '%s %p\0' # that gives null-delimited, you can use \n instead
                         # for newline-delimited

Есть много других флагов для -printf , проверьте справочную страницу find.

3
27.01.2020, 21:23

Теги

Похожие вопросы