linux命令xargs:它传递的参数的最大大小是多少?

8 浏览
0 Comments

linux命令xargs:它传递的参数的最大大小是多少?

似乎xargs不会一次性传递所有参数,手册中说xargs 执行命令(默认为/bin/echo)一次或多次,我听说原因是xargs将传入的参数分组,并逐组传递给命令。如果这个说法是正确的,有人知道这个组大小是如何确定的吗?谢谢。

0
0 Comments

使用--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选项可以用于发现当前系统上生效的实际限制。

讽刺的是,--show-limits选项不是xargs的POSIX标准的一部分,所以您不能依赖它。(我认为这是GNU的扩展)。

0