Кажется, что xargs не передает все аргументы за один раз, говорит в руководстве, что xargs executes the command (default is /bin/echo) one or more times
, я слышал, что причина этого в том, что xargs прерывает переданные аргументы в группы и передает их в группа команд по группам. Если это правильно, кто-нибудь знает, как определяется размер этой группы? Благодаря
Linux command xargs: максимальный размер аргументов, переданных им?
Ответ 1
Используйте аргумент --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-limits может использоваться для обнаружения фактических пределов, действующих в текущей системе.