У меня есть система Ubuntu Linux. У меня есть каталог с большим количеством файлов. я могу использовать rm -rf $NAME
чтобы удалить все это. Однако это может использовать много дискового ввода-вывода и вызвать увеличение нагрузки из-за дискового ввода-вывода. Даже если я использую ionice -c 3
он по-прежнему может вызывать много операций ввода-вывода на диск и, следовательно, нагрузку.
Есть ли slowrmrf
команда, которая будет похожа на rm -rf
, но будет идти "медленно" (FSVO медленно) и удалять все файлы, но будет смотреть на загрузку системы и иногда делать паузу, чтобы позволить нагрузке снова снизиться?
Вы можете использовать ionice чтобы ограничить использование io любого процесса.
Например, вы можете использовать следующее:
ionice -c3 rm -rf $ ИМЯ
Чтобы разрешить rm использовать io только тогда, когда ни один другой процесс не требует io, так как -c3 означает, что класс планирования простаивает.
find "$NAME" -type f -exec bash -c 'rm -f "$1";sleep 0.1;' _ {} \;
Вы можете трубить find
вывод в цикл, который иногда приостанавливается.
У меня есть сценарий, который делает это в основном, к которому у меня сейчас нет доступа, но он будет примерно таким:
i=0
find $ORIGIN_PATH -type f -print | \
IFS="" while read filename; do
i=$(($i + 1))
rm "$filename" &>/dev/null
if test "$i" -gt 100; then
sleep 15
i=0
fi
done
Вышеупомянутое приведет к удалению 100 файлов (рекурсивный поиск по заданному пути источника), затем в спящем режиме на 15 секунд, затем удалит еще 100 файлов, затем снова в спящий режим и т. Отрегулируйте счетчик и продолжительность сна по желанию.
Как указано выше, вероятно, небезопасно для экзотических имен файлов. Однако он должен дать вам общее представление об одном из возможных подходов к медленному удалению, не прибегая к специализированному программному обеспечению.