1

Я думал, что эта проблема была исправлена в Linux, как 10 лет назад. 4000 файлов на самом деле не кажутся чрезмерными и их можно удалить без проблем. Так что эта проблема явно существует в OS X - возможно, не в Ubuntu. Я занимаюсь разработкой под OS X и внедряю в Ubuntu

Есть ли обходной путь системного уровня в любой среде? Я действительно не хочу думать об этой проблеме для такого небольшого количества файлов? Эта проблема все еще существует в Linux, особенно в Ubuntu?

3 ответа3

5

Это все еще проблема для всех Unix, о которых я знаю, а также для Windows. Это действительно ограничение количества байтов, передаваемых в командной строке, а не количества файлов или чего-либо еще.

Попробуйте getconf ARG_MAX чтобы увидеть ограничение (в байтах) для вашего Unix. Вы можете использовать команду xargs для решения таких проблем.

3

Это не проблема, а предел. Вы можете использовать что-то вроде этого:

find ./ -exec rm -rf {} \;

Или что не означает использование альтернативы, которая делает эту работу?

3

Хотя я не могу говорить о других * nixs, AFAIK, эта "проблема" всегда существовала в Mac OS X.

ARG_MAX определяется следующим образом в /usr/include/sys/syslimits.h:

#define ARG_MAX   (256 * 1024)  /* max bytes for an exec function */

sysctl kern.argmax возвращает:

kern.argmax: 262144

(Это в Mac OS X 10.7.3; многие из этих типов ограничений постепенно увеличивались в течение жизненного цикла OS X).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .