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

13

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

1个回答

23

使用 --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选项可用于发现当前系统强制执行的实际限制。


2
具有讽刺意味的是,--show-limits选项不属于xargs的POSIX标准,因此您不能依赖它。(我认为这是GNU的扩展。) - 200_success

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接