Команда Linux Xargs: максимальный размер аргументов, переданных ей? - PullRequest
9 голосов
/ 24 апреля 2011

Похоже, что xargs не передает все аргументы сразу, в руководстве говорится, что xargs executes the command (default is /bin/echo) one or more times, я слышал, что причина этого в том, что xargs разбивает переданные аргументы на группы и передает их команда группа за группой. Если это правильно, кто-нибудь знает, как определяется размер этой группы? Спасибо

1 Ответ

19 голосов
/ 24 апреля 2011

Используйте аргумент --show-limits. В нем будут перечислены существующие ограничения в вашей системе.

$ xargs --show-limits
Your environment variables take up 4108 bytes
POSIX upper limit on argument length (this system): 2090996
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2086888
Size of command buffer we are actually using: 131072

Размер группы зависит от длины каждого передаваемого аргумента и ограничений, перечисленных выше.

со справочной страницы xargs, для справки:

Стандарт POSIX позволяет реализациям ограничивать размер аргументов для функций exec. Этот предел может составлять до 4096 байт, включая размер среды. Чтобы скрипты были переносимыми, они не должны полагаться на большее значение. Однако я не знаю ни одной реализации, чей фактический предел настолько мал. Параметр --show-limit можно использовать для определения действительных ограничений, действующих в текущей системе.

...