Linux Argument list too long 参数过长的最大长度值

对于 Linux bash 参数过长错误 “Argument list too long” 网上有很多解决方案,但并没有解释这个最大长度的值的范围。本着追根溯源的态度,记录下限制参数长度的因素以及最大长度。

参数最大长度

如何确认Linux bash中能接受的最大长度呢?
在这里插入图片描述
参考ARG_MAX, maximum length of arguments for a new process
从以上文献中能看出在Linux2.6.23内核以后参数长度最长不能超过MAX_ARG_STRLEN

MAX_ARG_STRLEN<linux/binfmts.h>中定义为:

#define MAX_ARG_STRLEN (PAGE_SIZE * 32)

请添加图片描述

验证

如下图验证所示:
可以通过getconf PAGE_SIZE 获取内存页大小。
通过echo $(( $(getconf PAGE_SIZE)*32 )) 得到 MAX_ARG_STRLEN值,
请添加图片描述
通过边界值 131071 进行验证:
/bin/echo "$(printf "%*s" 131071 "a")">/dev/null

结果符合我们的预测。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spaceack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值