我最近一直在复制和移动大量文件(约40万个)。我知道在Bash命令行上可以扩展的参数数量有限制,因此我一直在使用xargs来限制产生的数量。
出于好奇,我想知道我可以使用的最大参数数目是多少,我发现这篇文章说它是依赖于系统的,我可以运行以下命令来找出:
$ getconf ARG_MAX
令我惊讶的是,我回来的答案是:
2621440
刚刚超过 260万
。正如我所说,我要处理的文件数量要少得多,大约为40万。我绝对需要使用xargs
移动和复制这些文件的方法,因为我尝试使用普通mv * ...
或cp * ...
出现“参数列表过长”错误。
因此,mv
and cp
命令对我可以使用的参数数量有固定的限制(我在他们的手册页中找不到任何内容),还是我错过了什么?
正如Ignacio所说,ARG_MAX
是传递给的参数 缓冲区
的最大长度exec()
,而不是文件的最大数量(此页面有非常深入的说明)。具体来说,它列出fs/exec.c
了以下条件:
PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *) / sizeof(void *)
而且,您似乎还有一些其他限制:
在32位Linux上,这是 ARGMAX / 4-1(32767) 。这将成为相关如果参数的平均长度小于4.由于Linux
2.6.23,该功能检查,如果数量超过MAX_ARG_STRINGS
在<linux/binfmts.h>
(2 ^ 32-1 =
4294967296-1)。作为附加限制,一个参数不得超过MAX_ARG_STRLEN
(131072)。
问题内容: 众所周知,Python函数最多可以包含256个参数。我很好奇的是,此限制是否适用以及何时按以下方式展开它们: 我问是因为,假设地,在某些情况下,大于256个项目的列表可能会以或的形式展开。 问题答案: 在Python 3.7和更高版本中,没有限制。这是在问题#27213和问题#12844中完成的工作的结果;#27213重新设计了操作码系列,以提高性能和简化性(3.6的一部分),释放了操
java中vararg可以使用的最大参数数是多少?我相信应该是有限度的,不是无限的。
问题内容: 我正在使用REST访问PHP服务器:所有数据都作为URL参数在GET请求中传递。参数之一以query_string到达服务器,但不在_GET全局中。但是,缩短参数(截止值似乎是512个字符左右)可以让它通过。 假设我已正确诊断问题,是否可以更改此最大大小?我在文档中没有找到任何解释,甚至没有提及此限制。这是在Debian挤压/ Apache 2.2.16 / PHP 5.3.3上。 问
问题内容: 可以通过ADO.Net传递到Sql Server查询的参数限制为2,100,但是.Net开发人员使用的其他常见数据库的记录限制是什么-特别是我感兴趣的是: 甲骨文10g / 11g 的MySQL PostgreSQL的 Sqlite 有人知道吗? 问题答案: 甲骨文:64,000。资源 MySQL: 默认情况下,没有限制。MySQL的“文本协议”要求在将命令文本发送到服务器之前,.NE
问题内容: Java中的方法可以拥有的最大参数数量是什么?为什么? 我在64位Windows系统上使用Java 1.8。 关于StackOverflow的所有答案都表明,技术限制为255个参数,但未指定原因。 确切地说,静态方法为255,非静态方法为254(在这种情况下为第255)。 我认为这可以用某种规范来描述,并且只允许静态定义最大数量的参数。 但这仅对 所有4字节类型有效。我使用参数进行了一
Java中的一个方法可以拥有的最大参数数是多少?为什么? 我正在64位Windows系统上使用Java1.8。 准确地说,255用于静态,254用于非静态(在本例中将是第255个)方法。 我认为这可以在某种规范中描述,并且只需要静态定义允许的最大参数数。 但这只对和所有4字节类型有效。我用参数做了一些测试,在那种情况下我只能声明127个参数。 限制与方法的堆栈大小有关系吗? 注意:我真的不打算在任