Bash 参数的最大数量 != cp 参数的最大数量?
- 2024-11-08 09:04:00
- admin 原创
- 36
问题描述:
我最近一直在复制和移动大量文件(约 400,000 个)。我知道 Bash 命令行上可以扩展的参数数量是有限制的,因此我一直使用 xargs 来限制生成的数量。
出于好奇,我想知道我可以使用的最大参数数量是多少,我发现这篇文章说它取决于系统,我可以运行这个命令来找出答案:
$ getconf ARG_MAX
令我惊讶的是,我得到的答复是:
2621440
刚好超过260 万。正如我所说,我处理的文件数量远少于这个数字——大约 40 万。我肯定需要使用xargs
移动和复制这些文件的方法,因为我尝试使用普通mv * ...
或cp * ...
并收到“参数列表太长”错误。
那么,mv
和cp
命令是否对我可以使用的参数数量有自己的固定限制(我在其手册页中找不到任何内容),或者我遗漏了什么?
解决方案 1:
正如 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)。
解决方案 2:
ARG_MAX
是函数参数的最大长度exec(3)
。shell 不需要支持从其命令行传递此长度的参数。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD