昨天碰见了一个case,一个脚本执行失败。
经过排查,原因是因为shell命令,参数过长(Argument list too long)
因为时间有限,也没查阅很多资料,只是跟一个懂Linux的朋友咨询了一些问题。
Linux里面有个参数ARG_MAX,可以通过getconf ARG_MAX 这个命令来查询他的值。我这个系统上值是131072,用来限制参数的长度。
其本质原因是因为Linux给一个进程,开辟存放参数的空间,也就是栈,的大小有限制。
内核代码给栈开辟空间的代码你可以简单理解为 char[131072] stack.
shell,命令的参数肯定是要放进栈的,栈的大小有限制,那么参数的长度肯定有限制。
因为栈的大小为128KB,所以你的参数最多也就是128K个字符。