[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: OpenVZ, VServer и полудесяток



> Для init.d bash как раз не рекомендуются, есть специальные шеллы с
> минимизацией количества форков при загрузке..

Признаться, время загрузки совсем не интересует, секундой больше или меньше 
для меня не принципиально. Вопрос в удобстве поддержки скриптов. 

> Насчет сочувствия - сочувствую тем кто не читает вообще никакие доки,
> даже howto и faq, не умеет пользоваться гуглом и думает что в этом
> виноват bash.
> Эта проблема есть вообще _везде_ - ограничение на длину команды(без
> которого было бы всё _намного_ хуже), ядро эти "*" не понимает, bash
> заменяет такие маски на полный список соотв. файлов, длина команды
> получается адской. 

Тогда по идее rm -rf /test/test_10000/ должно работать быстро, поскольку 
список файлов не передается... Здесь-то что мешает?

> Решение: 
> find /test/test_10000/ -type f |xargs rm
> Немного более кошерно:
> find /test/test_10000/ -type f -print0 |xargs -0 rm -f
> Вообще это может и сам find:
> find /test/test_10000/ -type f -delete
> Но xargs более универсальная вещь.
> Глубина рекурсии для поиска по умолчанию не ограничена, чтобы не трогать
> подкаталоги:
> find /test/test_10000/ -type f -maxdepth=1 |xargs rm
>
>
> Насчет вашего варианта на тикле - он хуже(съест дофига ram, если файлов
> много), и явно медленнее решения с find.

Интересно, откуда это следует. Буду пробовать. Сдается мне, что если запускаю 
один интерпретатор тикля, то это будет не медленнее варианта с find, который 
тоже еще надо проверить по скорости.

> и, кстати, на bash, вы могли бы написать аналогично:
> cd /test/test_000000/
> for f in $(ls )
> do
>     rm "$f"
> done
> Если не хочеться менять каталог - добавьте путь в ls и rm или
> используйте файл:
> for f in $(find /test/test_000/ -type f); do rm "$f"; done
>
> Но это очень не эффективно - по форку на файл.

Идея понятна. Только на тикле это рабочее решение, а на баше - лишь пример. 
Хотя если в используемом шелле подобные команды встроены, то и проблемы быть 
не должно.


Reply to: